Gemfire 订阅不适用于分布式环境
Gemfire Subscription does not work on distributed environment
我设置了一个带有 2 个定位器和 3 个节点的集群 Gemfire 环境。我想将其用作 publisher/subscription 解决方案。我在 Java 应用程序中创建了一个缓存侦听器,当我将一个项目插入一个区域时它运行良好(记录)。但是,然后我启动 gfsh window 来插入一个项目,java 侦听器不起作用。我的配置如下:
<gfe:client-cache id="client-cache" pool-name="my-pool" properties-ref="gemfire-props"/>
<gfe:pool id="my-pool" subscription-enabled="true">
<gfe:locator host="10.151.134.111" port="10334" />
</gfe:pool>
<gfe:client-region id="Test" data-policy="EMPTY" cache-ref="client-cache">
<gfe:cache-listener>
<bean class="Test.util.LoggingCacheListener"/>
</gfe:cache-listener>
</gfe:client-region>
我相信您需要 data-policy=NORMAL(或除 EMPTY 之外的其他内容)才能正常工作。有关详细信息,请参阅 DataPolicy。客户端侦听器不会触发,因为数据永远不会复制到客户端缓存,因此没有状态更改。使用 data-policy=EMPTY 时,仅当客户端执行放置时才会触发侦听器。
我设置了一个带有 2 个定位器和 3 个节点的集群 Gemfire 环境。我想将其用作 publisher/subscription 解决方案。我在 Java 应用程序中创建了一个缓存侦听器,当我将一个项目插入一个区域时它运行良好(记录)。但是,然后我启动 gfsh window 来插入一个项目,java 侦听器不起作用。我的配置如下:
<gfe:client-cache id="client-cache" pool-name="my-pool" properties-ref="gemfire-props"/>
<gfe:pool id="my-pool" subscription-enabled="true">
<gfe:locator host="10.151.134.111" port="10334" />
</gfe:pool>
<gfe:client-region id="Test" data-policy="EMPTY" cache-ref="client-cache">
<gfe:cache-listener>
<bean class="Test.util.LoggingCacheListener"/>
</gfe:cache-listener>
</gfe:client-region>
我相信您需要 data-policy=NORMAL(或除 EMPTY 之外的其他内容)才能正常工作。有关详细信息,请参阅 DataPolicy。客户端侦听器不会触发,因为数据永远不会复制到客户端缓存,因此没有状态更改。使用 data-policy=EMPTY 时,仅当客户端执行放置时才会触发侦听器。