JMS トピックをキャッシュするために Hazelcast を使用しています。
すべてがある程度までうまく機能します。実行時間の約 30 ~ 40 分後、次のようになり始めます。
WARNING: [192.168.3.102]:5701 [devGroup] RedoLog{key=Data{partitionHash=-1465305045} size= 10, operation=CONCURRENT_MAP_PUT_IF_ABSENT, target=Address[192.168.3.102]:5701, targetConnected=false, redoCount=910, migrating=null
partition=Partition [186]{
0:Address[192.168.3.102]:5701
}
}
開発者フォーラムを読んで理解した限り、これらは再実行警告であり、Hazelcast が指定されたインスタンスに接続しtarget=Address[192.168.3.102]:5701
てキャッシュを配布できないことを意味します。
ただし、奇妙なことに、構成には現在のサーバー インスタンスであるノードが 1 つしかありません。
INFO: [192.168.3.102]:5701 [devGroup]
Members [1] {
Member [192.168.3.102]:5701 this
}
私はそれを設定するために春を使用しています:
<hz:hazelcast id="hazelcastInstance">
<hz:config>
<hz:group
name="devGroup"
password="pass"/>
<hz:properties>
<hz:property name="hazelcast.merge.first.run.delay.seconds">5</hz:property>
<hz:property name="hazelcast.merge.next.run.delay.seconds">5</hz:property>
</hz:properties>
<hz:network port="5701" port-auto-increment="true">
<hz:join>
<hz:multicast enabled="false" />
<hz:tcp-ip enabled="true">
<hz:members>192.168.3.102</hz:members>
</hz:tcp-ip>
</hz:join>
<hz:symmetric-encryption enabled="true"
algorithm="PBEWithMD5AndDES"
salt="thesalt"
password="thepass"
iteration-count="19"/>
<hz:asymmetric-encryption enabled="false"
key-password="thekeypass"
key-alias="local"
store-type="JKS"
store-password="thestorepass"
store-path="keystore"/>
</hz:network>
</hz:config>
</hz:hazelcast>
Hazelcast 2.1、Spring 3.1、および Tomcat 7 を使用しています
では、なぜ私が警告を受けているのか知っている人はいますか?
ありがとう、
コメントに答えるには:
私はこのように使用します:
final ConcurrentMap<K, V> cachedMap = getHazelcast().getMap(region);
cachedMap.putIfAbsent(key, value);
このgetHazelcast()
メソッドは、SpringHazelcastInstance
を介して注入されたものを返します (上記の構成のもの、Bean ID を確認しましたが、問題ないようです)。
更新 2。
プログラムで追加されたマップには最大サイズがあります。
final MapConfig mapConfig = hazelcast.getConfig().getMapConfig(region);
.... val is calculated here ....
mapConfig.getMaxSizeConfig().setSize(val);
val
25000 未満にすることはできません
ただし、サイズ構成なしで試してみましたが、それでも警告が表示されます。
map.values(SqlPredicate(""))
また、日付で値を取得するために使用します。