hazelcast.event.queue.capacity: default value is 1000000
hazelcast.event.queue.timeout.millis: default value is 250
hazelcast.event.thread.count: default value is 5
A striped executor in each node controls and dispatches the received events. This striped executor also guarantees the event order. For all events in Hazelcast, the order that events are generated and the order they are published are guaranteed for given keys. For map and multimap, the order is preserved for the operations on the same key of the entry. For list, set, topic and queue, the order is preserved for events on that instance of the distributed data structure.
You achieve the order guarantee by making only one thread responsible for a particular set of events (entry events of a key in a map, item events of a collection, etc.) in
If the event queue reaches the capacity (
hazelcast.event.queue.capacity) and the last item cannot be put into the event queue for the period specified in
hazelcast.event.queue.timeout.millis, these events will be dropped with a warning message, such as "EventQueue overloaded".
If event listeners are performing a computation that takes a long time, the event queue can reach its maximum capacity and lose events. For map and multimap, you can configure
hazelcast.event.thread.count to a higher value so that less collision occurs for keys, and therefore worker threads will not block each other in
StripedExecutor. For list, set, topic and queue, you should offload heavy work to another thread. To preserve order guarantee, you should implement similar logic with
StripedExecutor in the offloaded thread pool.
Please refer to the Listener Configurations section on how to configure each listener.