Event listeners can be added to and removed from the related object using Hazelcast API.
Downside of attaching listeners using API is the possibility of missing events between creation of object and registering listener. To overcome this race condition, Hazelcast introduces registration of listeners in configuration. Listeners can be registered using either declarative, programmatic or Spring configuration.
MembershipListener
Declarative Configuration
<listeners>
<listener>com.hazelcast.examples.MembershipListener</listener>
</listeners>
Programmatic Configuration
config.addListenerConfig(
new ListenerConfig( "com.hazelcast.examples.MembershipListener" ) );
Spring XML configuration
<hz:listeners>
<hz:listener class-name="com.hazelcast.spring.DummyMembershipListener"/>
<hz:listener implementation="dummyMembershipListener"/>
</hz:listeners>
DistributedObjectListener
Declarative Configuration
<listeners>
<listener>com.hazelcast.examples.DistributedObjectListener</listener>
</listeners>
Programmatic Configuration
config.addListenerConfig(
new ListenerConfig( "com.hazelcast.examples.DistributedObjectListener" ) );
Spring XML configuration
<hz:listeners>
<hz:listener class-name="com.hazelcast.spring.DummyDistributedObjectListener"/>
<hz:listener implementation="dummyDistributedObjectListener"/>
</hz:listeners>
MigrationListener
Declarative Configuration
<listeners>
<listener>com.hazelcast.examples.MigrationListener</listener>
</listeners>
Programmatic Configuration
config.addListenerConfig(
new ListenerConfig( "com.hazelcast.examples.MigrationListener" ) );
Spring XML configuration
<hz:listeners>
<hz:listener class-name="com.hazelcast.spring.DummyMigrationListener"/>
<hz:listener implementation="dummyMigrationListener"/>
</hz:listeners>
LifecycleListener
Declarative Configuration
<listeners>
<listener>com.hazelcast.examples.LifecycleListener</listener>
</listeners>
Programmatic Configuration
config.addListenerConfig(
new ListenerConfig( "com.hazelcast.examples.LifecycleListener" ) );
Spring XML configuration
<hz:listeners>
<hz:listener class-name="com.hazelcast.spring.DummyLifecycleListener"/>
<hz:listener implementation="dummyLifecycleListener"/>
</hz:listeners>
EntryListener for IMap
Declarative Configuration
<map name="default">
...
<entry-listeners>
<entry-listener include-value="true" local="false">
com.hazelcast.examples.EntryListener
</entry-listener>
</entry-listeners>
</map>
Programmatic Configuration
mapConfig.addEntryListenerConfig(
new EntryListenerConfig( "com.hazelcast.examples.EntryListener",
false, false ) );
Spring XML configuration
<hz:map name="default">
<hz:entry-listeners>
<hz:entry-listener include-value="true"
class-name="com.hazelcast.spring.DummyEntryListener"/>
<hz:entry-listener implementation="dummyEntryListener" local="true"/>
</hz:entry-listeners>
</hz:map>
EntryListener for MultiMap
Declarative Configuration
<multimap name="default">
<value-collection-type>SET</value-collection-type>
<entry-listeners>
<entry-listener include-value="true" local="false">
com.hazelcast.examples.EntryListener
</entry-listener>
</entry-listeners>
</multimap>
Programmatic Configuration
multiMapConfig.addEntryListenerConfig(
new EntryListenerConfig( "com.hazelcast.examples.EntryListener",
false, false ) );
Spring XML configuration
<hz:multimap name="default" value-collection-type="LIST">
<hz:entry-listeners>
<hz:entry-listener include-value="true"
class-name="com.hazelcast.spring.DummyEntryListener"/>
<hz:entry-listener implementation="dummyEntryListener" local="true"/>
</hz:entry-listeners>
</hz:multimap>
ItemListener for IQueue
Declarative Configuration
<queue name="default">
...
<item-listeners>
<item-listener include-value="true">
com.hazelcast.examples.ItemListener
</item-listener>
</item-listeners>
</queue>
Programmatic Configuration
queueConfig.addItemListenerConfig(
new ItemListenerConfig( "com.hazelcast.examples.ItemListener", true ) );
Spring XML configuration
<hz:queue name="default" >
<hz:item-listeners>
<hz:item-listener include-value="true"
class-name="com.hazelcast.spring.DummyItemListener"/>
</hz:item-listeners>
</hz:queue>
MessageListener for ITopic
Declarative Configuration
<topic name="default">
<message-listeners>
<message-listener>
com.hazelcast.examples.MessageListener
</message-listener>
</message-listeners>
</topic>
Programmatic Configuration
topicConfig.addMessageListenerConfig(
new ListenerConfig( "com.hazelcast.examples.MessageListener" ) );
Spring XML configuration
<hz:topic name="default">
<hz:message-listeners>
<hz:message-listener
class-name="com.hazelcast.spring.DummyMessageListener"/>
</hz:message-listeners>
</hz:topic>
ClientListener
Declarative Configuration
<listeners>
<listener>com.hazelcast.examples.ClientListener</listener>
</listeners>
Programmatic Configuration
topicConfig.addMessageListenerConfig(
new ListenerConfig( "com.hazelcast.examples.ClientListener" ) );
Spring XML configuration
<hz:listeners>
<hz:listener class-name="com.hazelcast.spring.DummyClientListener"/>
<hz:listener implementation="dummyClientListener"/>
</hz:listeners>