Слушатель карты Hazelcast по предикату на ключе карты - PullRequest
0 голосов
/ 08 апреля 2020

как я могу установить слушателя на карту, которая имеет сложный объект для ключа, и я хочу слушать только изменения, которые происходят с записями со специфицированным c значением параметра ключа.

например, у меня есть код, подобный этому:

private class MyListener implements EntryAddedListener<>,
        EntryUpdatedListener<KeyObject, Value> {

    @Override
    public void entryAdded(EntryEvent<KeyObject, Value> event) {
        processCallbaclk(event);
    }
    @Override
    public void entryUpdated(EntryEvent<KeyObject, Value> event) {
        processCallback(event);
    }
}

KeyObject{
       Integer id,
       String language
}

MyListener listener = new MyListener();
Predicate<KeyObject, Value> filter = equal(language, "EN");

imap.addEntryListener(listener, filter, true)

, но когда запись с ключом, содержащим язык "EN", обновлена, мои функции обратного вызова не вызываются. Поэтому я предполагаю, что мой предикат неверен.

1 Ответ

2 голосов
/ 08 апреля 2020

Для доступа к ключевой части записи необходимо использовать «__key»

Например, «__key.field1 > 5».

См. https://docs.hazelcast.org/docs/4.0/manual/html-single/index.html#querying - ключи ввода с предикатами для более подробной информации.

...