我们在项目中使用了Hazelcast分布式地图。 交付后,它只是停止从数据库中读取条目。储存作品。在本地,我们无法重现该问题。
我们尝试重新启动服务器或清空数据库表,但没有成功。映射始终为空:
@Autowired
@Qualifier("hazelcast")
private transient HazelcastInstance hazelcastInstance;
....
hazelcastInstance.getMap(MAP_NAME).keySet() ;//is empty
地图的Hazelcast配置:
<hz:hazelcast id="hazelcast">
<hz:config>
<hz:group name="${hazelcast.clustername}" password="${hazelcast.password}" />
<hz:properties>
<hz:property name="hazelcast.logging.type">slf4j</hz:property>
<hz:property name="hazelcast.jmx">${hazelcast.jmx:true}</hz:property>
</hz:properties>
<hz:network port="${hazelcast.port:8801}"
port-auto-increment="${hazelcast.auto-increment:true}">
<hz:join>
<hz:multicast enabled="${hazelcast.multicast-enabled:false}"
multicast-group="${hazelcast.multicast-group}"
multicast-port="${hazelcast.multicast-port}" />
<hz:tcp-ip enabled="${hazelcast.tcp-ip-enabled:true}">
<hz:members>${hazelcast.tcp-ip-members}</hz:members>
</hz:tcp-ip>
</hz:join>
</hz:network>
<hz:map name="maps.*" backup-count="2" max-size="0" eviction-percentage="30" read-backup-data="true" eviction-policy="NONE" merge-policy="com.hazelcast.map.merge.PassThroughMergePolicy">
<hz:map-store enabled="true" write-delay-seconds="0" implementation="persistenceProvider"/>
</hz:map>
我们的应用程序基于Spring。 PersistenceProvider类仅实现com.hazelcast.core.MapLoader和com.hazelcast.core.MapStore以便处理数据库中的条目。
@Component
public class PersistenceProvider implements MapLoader<Key, Value>, MapStore<Key, Value> {...}
在日志中,我只看到了可能不相关的条目:
[hz._hzInstance_1_Cluster.cached.thread-2] INFO com.hazelcast.nio.tcp.TcpIpConnector.log | [xxx]:8801 Could not connect to: /yyy:8802. Reason: SocketException[Verbindungsaufbau abgelehnt to address /yyyy:8802]
[hz._hzInstance_1_Cluster.cached.thread-2] INFO c.hazelcast.cluster.impl.TcpIpJoiner.log | [xxx]:8801 [xxx]:8802 is added to the blacklist.
提醒一下:该代码以前可以工作,可以在本地工作,但现在在此环境中只能存储hazelcast数据,而不能加载!
我是Hazelcast的新手,我想知道这可能是缓存问题还是我们可以在配置中更改的内容。
重要的是要取消阻止它,因为客户无法使用该应用程序。
你有什么主意吗?