map:myMapのマップロック操作にクォーラムを使用したいと思います。Hazelcast - ロック操作のためにクォーラムを使用する方法をIMapする?
私は定足数にプログラム設定を使用します。私は定足数IMPLを設定するcom.hazelcast.config.MapConfig.setQuorumNameメソッドを使用
QuorumConfig quorumConfig = new QuorumConfig();
quorumConfig.setName("xxx");
quorumConfig.setEnabled(true);
quorumConfig.setQuorumFunctionImplementation(new QuorumFunction() {
@Override
public boolean apply(Collection<Member> members) {
...
}
});
。
クォラムがxxxに設定されているため、私のマップ設定は以下のようです。
MapConfig {NAME = 'MYMAP'、inMemoryFormat = BINARY」、....、mapAttributeConfigs =ヌル、quorumName = XXX、queryCacheConfigs =ヌル、cacheDeserializedValues = INDEX_ONLY}
問題は、ロック操作のため、クォーラム機能が呼び出されません。
マップのput/remove操作では、クォーラム関数が尊重されていることがわかります。
com.hazelcast.quorum.QuorumException: Cluster quorum failed at com.hazelcast.quorum.impl.QuorumImpl.newQuorumException(QuorumImpl.java:164) at com.hazelcast.quorum.impl.QuorumImpl.ensureQuorumPresent(QuorumImpl.java:158) at com.hazelcast.quorum.impl.QuorumServiceImpl.ensureQuorumPresent(QuorumServiceImpl.java:127) at com.hazelcast.spi.impl.operationservice.impl.OperationRunnerImpl.ensureQuorumPresent(OperationRunnerImpl.java:237) at com.hazelcast.spi.impl.operationservice.impl.OperationRunnerImpl.run(OperationRunnerImpl.java:178) at com.hazelcast.spi.impl.operationexecutor.impl.OperationThread.process(OperationThread.java:120) at com.hazelcast.spi.impl.operationexecutor.impl.OperationThread.run(OperationThread.java:100) at ------ submitted from ------.(Unknown Source) at java.lang.Thread.getStackTrace(Thread.java:1117) at com.hazelcast.spi.impl.operationservice.impl.InvocationFuture.resolve(InvocationFuture.java:114) at com.hazelcast.spi.impl.operationservice.impl.InvocationFuture.resolveAndThrowIfException(InvocationFuture.java:75) at com.hazelcast.spi.impl.AbstractInvocationFuture.get(AbstractInvocationFuture.java:155) at com.hazelcast.map.impl.proxy.MapProxySupport.invokeOperation(MapProxySupport.java:373) at com.hazelcast.map.impl.proxy.MapProxySupport.removeInternal(MapProxySupport.java:508) at com.hazelcast.map.impl.proxy.MapProxyImpl.remove(MapProxyImpl.java:211)
しかし、定足数ロック操作には使用されません。
ドキュメントでは、xmlの設定はロック操作に使用されています。
例の設定は以下のように与えられる:
宣言的な構成の一例を:ここ
<map name="myMap"> <quorum-ref>map-actions-quorum</quorum-ref> </map> <lock name="myMap"> <quorum-ref>map-lock-actions-quorum</quorum-ref> </lock>
構成マップがマップ・ロック・アクション・クォーラムクォーラムを使用する マップロックアクションの場合はmap-actions-quorumクォーラム、他のマップの場合は アクション。
プログラム的にこれに相当するものは何ですか?
よろしくここ
だから私は私の名前としてlockConfigの名前を設定する必要があります地図?私の場合、lockConfig.setName( "myMap")? – simpleusr
クォーラム名を適切に設定する必要があります。ドキュメントの注記を参照してください:「前述のように、マップ名と一致する同じ名前またはパターンを持つロックのクォーラム定義によって、マップロックアクションが定義されたクォーラムを使用するよう強制されます。ロッククォーラムとマップロックアクションを使用します。 – wildnez