我正在尝试运行Gemfire客户端应用,但运行以下代码时出现IllegalStateException:
//clientPool is the name of the pool from the client
DynamicRegionFactory.Config config = new DynamicRegionFactory.Config(null,(String)"clientPool",false,true);
dynRegFact = DynamicRegionFactory.get();
dynRegFact.open(config);
_cache = new ClientCacheFactory().set("locators", "")
.set("mcast-port", "0").set("log-level", "error")
.set("cache-xml-file", xmlFileName)
.create();
线程“main”中的异常java.lang.IllegalStateException:必须将DynamicRegionFactory的客户端池配置为queue-enabled设置为true。
我无法弄清楚如何将queue-enabled设置为true。我会很感激一些代码,而不是像“检查文档的这一部分”那样的答案。我已经到处寻找了。
答案 0 :(得分:1)
您应该在池中启用订阅。只需将 subscription-enabled =“true”属性添加到池配置中。
注意:您的客户应支持交易。最好在缓存服务器上使用动态区域。来自客户呼叫远程功能。
示例:
功能:
public class CreateRegionFunction extends FunctionAdapter {
@Override
public void execute(FunctionContext fc) {
String name = (String) fc.getArguments();
Region reg = DynamicRegionFactory.get().createDynamicRegion("/parent",
name);
if (reg == null) {
fc.getResultSender().lastResult("ERROR");
} else {
fc.getResultSender().lastResult("DONE");
}
}
@Override
public String getId() {
return "create-region-function";
}
}
服务器端:
CreateRegionFunction creatRegFun = new CreateRegionFunction();
FunctionService.registerFunction(creatRegFun);
在服务器缓存中添加dynamic-region-factory:
<dynamic-region-factory />
客户方:
FunctionService.onServer(PoolManager.find("poolName"))
.withArgs("child")
.execute("create-region-function")
.getResult();
在这种情况下,不必使用DynamicRegionFactory,您可以使用RegionFactory并创建根区域。