Java Hazelcast逐出在使用最大大小策略作为堆大小时不使用Spring。它可以根据节点使用最大大小策略

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

本期适用于任何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="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”以检查它是否起作用。:(这似乎是一个错误,您能否打开一个问题:?谢谢。我已经这样做了。