Java Hazelcast逐出在使用最大大小策略作为堆大小时不使用Spring。它可以根据节点使用最大大小策略
本期适用于任何Hazelcast版本。(尝试了3.2.x、3.3.x、3.4.x)我已经指定了下面需要发生的逐出条件,以防止内存不足错误。但是,尽管我已经提到了最大大小,但是当使用时不会触发逐出。\u HEAP\u size是策略,而当策略是PER\u节点时会触发逐出Java Hazelcast逐出在使用最大大小策略作为堆大小时不使用Spring。它可以根据节点使用最大大小策略,java,spring,apache-camel,hazelcast,Java,Spring,Apache Camel,Hazelcast,本期适用于任何Hazelcast版本。(尝试了3.2.x、3.3.x、3.4.x)我已经指定了下面需要发生的逐出条件,以防止内存不足错误。但是,尽管我已经提到了最大大小,但是当使用时不会触发逐出。\u HEAP\u size是策略,而当策略是PER\u节点时会触发逐出 <hz:map name="aggregateCache" eviction-policy="LRU" in-memory-format="OBJECT" statistics-enabled
<hz:map name="aggregateCache" eviction-policy="LRU" in-memory-format="OBJECT"
statistics-enabled="true"
eviction-percentage="25"
max-size="120"
max-size-policy="USED_HEAP_SIZE">
<hz:entry-listeners>
<hz:entry-listener
include-value="true"
implementation="messageEventListener" />
</hz:entry-listeners>
</hz:map>
<bean id="messageEventListener"
class="com.manheim.webservices.ovcoutbound.cep.cache.MessageEventListener" />
我触发逐出作为MessageEventListener类的一部分,如下所示。
公共类MessageEventListener实现EntryListener{
private static final String EVICTED_MESSAGES= "direct:evictedAggregateCacheMessages";
@Override
public void entryEvicted(EntryEvent<String, HubMessageAggregate> event) {
try{
HubMessageAggregate aggregate = event.getOldValue();
exchange.getIn().setBody(aggregate);
template.send(EVICTED_MESSAGES, exchange);
}
catch(Exception e){
String error = "Unable to process the Evicted message properly with the Key " +
event.getKey();
}
}
private static final String executed_MESSAGES=“direct:executedAggregateCacheMessages”;
@凌驾
public void entryexecuted(EntryEvent事件){
试一试{
HubMessageAggregate=event.getOldValue();
exchange.getIn().setBody(聚合);
发送(逐出的_消息,交换);
}
捕获(例外e){
String error=“无法使用键”+
event.getKey();
}
}
您必须将内存format=“OBJECT”中的更改为内存format=“BINARY”
目前,有一个PRD负责此请求:
如果您愿意,您可以为hazelcast作出贡献:)Bilal,我尝试了in-memory format=“BINARY”(默认设置),但它也不起作用。稍后,我添加了in-memory format=“OBJECT”以检查它是否起作用。:(这似乎是一个错误,您能否打开一个问题:?谢谢。我已经这样做了。