Hazelcast Eviction не работает со Spring, когда max-size-policy имеет вид USED_HEAP_SIZE. Работает нормально с max-size-policy как PER_NODE

1

Эта проблема для любых версий Hazelcast. (Tried 3.2.x, 3.3.x, 3.4.x) Я определил условия высева ниже, что должно происходить для предотвращения ошибки в памяти. Но хотя я упомянул о максимальном размере, Eviction не запускается, когда USED_HEAP_SIZE является политикой, пока она запускается, когда политика PER_NODE.

  <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" />

Я вызываю Eviction как часть класса 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();
    }

}
Теги:
spring
hazelcast
apache-camel

1 ответ

1

Вы должны изменить in-memory-format="OBJECT" in-memory-format="BINARY"

И в настоящее время существует PRD для этого запроса: https://hazelcast.atlassian.net/wiki/display/COM/HEP+3+-+Entry+Cost+Calculator+SPI

Если вы хотите, вы можете внести свой вклад в hazelcast :)

  • 0
    Билал, я пробовал с in-memory-format = "BINARY" (по умолчанию), и он тоже не работал. Позже я добавил in-memory-format = "OBJECT", чтобы проверить, будет ли он работать. :(
  • 0
    Кажется, это ошибка, вы можете открыть вопрос: github.com/hazelcast/hazelcast/issues ?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню