Hazelcast карта записи слушателя не из Spring - PullRequest
0 голосов
/ 29 августа 2018

Я пытаюсь настроить карту Hazelcast для использования прослушивателя записей с использованием Spring. Однако я вижу, что это не работает (события не приходят к слушателю).

Мой слушатель записи:

public class MyMapListener extends EntryAdapter<String, String> implements MapListener{
    @Override
    public void onEntryEvent(EntryEvent<String, String> event) {
        EntryEventType type = event.getEventType();
        System.out.println("Event type: " + type);
    }
}

Контекст приложения My Spring:

<hz:hazelcast id="instance">
    <hz:config>
        <hz:group name="dev" password="password"/>
        <hz:properties>
            <hz:property name="hazelcast.merge.first.run.delay.seconds">5</hz:property>
            <hz:property name="hazelcast.merge.next.run.delay.seconds">5</hz:property>
        </hz:properties>
        <hz:network port="5705" port-auto-increment="true">
            <hz:join>
                <hz:multicast enabled="true"/>
            </hz:join>
        </hz:network>
        <hz:map name="myMap" >
            <hz:entry-listeners>
                <hz:entry-listener class-name="rw.gov.dgie.bms.hazelcast.listener.map.MyMapListener" include-value="true"/>
                <hz:entry-listener implementation="myMapListener" local="true"/>
            </hz:entry-listeners>
        </hz:map>
    </hz:config>
</hz:hazelcast>

<hz:client id="client">
    <hz:group name="dev" password="password"/>
    <hz:network>
        <hz:member>127.0.0.1:5705</hz:member>
    </hz:network>
</hz:client>

<bean class="rw.gov.dgie.bms.hazelcast.listener.map.MyMapListener" name="myMapListener"/>

<hz:map id="myMap" instance-ref="instance" name="MyMap" lazy-init="false"/>

Когда я добавляю слушателя к внедренной карте из кода Java, она работает нормально:

@Autowired
private IMap myMap;

myMap.addEntryListener((MapListener)new MyMapListener(), true);

Что я сделал не так?

1 Ответ

0 голосов
/ 31 августа 2018

Изменение

<hz:map id="myMap" instance-ref="instance" name="MyMap" lazy-init="false"/>

до

<hz:map id="myMap" instance-ref="instance" name="myMap" lazy-init="false"/>

id - это имя бина, name - это имя карты.

В верхнем разделе исходного кода слушатель здесь

<hz:map name="myMap">
   <hz:entry-listeners>

добавляется к карте с именем " myMap ", а компонент в нижней части ссылается на карту с именем " MyMap ". Итак, две разные карты из-за заглавных букв M на одной, а не на другой.

...