Основанное на времени выселение в Hazelcast

Я работаю над требованием, в котором у меня будет N экземпляров Hazelcast, работающих в кластере, а также у всех потребителей Kafka.

Теперь спросим, ​​каждое сообщение, которое приходит на kafka, должно быть добавлено к распределенной карте, и запись должна быть удалена каждые 20 секунд, что я и сделал, используя комбинацию параметров времени жизни и макс. Числа бездействующих секунд на карте. конфигурации.

Но то, что я действительно хочу, это то, что, когда запись выселяется, только один из узлов должен ее обработать, прямо сейчас, извлечение записи сообщается всем узлам.

Дайте мне знать, если потребуется дополнительная информация.

1 ответ

Вы должны добавить localEntryListener к вашей распределенной карте, чтобы участник получал только уведомления, владельцем которых он является.

например

if(map != null){
            map.addLocalEntryListener(new EntryAddedListener<Long, Long>() {
                @Override
                public void entryAdded(EntryEvent<Long, Long> event) {
                    log.info("LOCAL ENTRY ADDED : {} at {}", event, System.currentTimeMillis());
                }
            });

Приведенный выше пример предназначен для EntryAddedListener, вы также можете реализовать EntryEvictedListener.

Другие вопросы по тегам