To make sure I understand correctly: If I have a partition region spread over several nodes with parallel queues and AsyncEventListeners defined in each node and then I do a put to that region the event will be queued only on the node the event was local to, correct? So there is no chance of doing duplicate DB operations?
Depending on the configuration, the event may be queued on more than one node, as the listener can be deployed on redundant nodes as well, for high availability, but only the local one will fire. There is no chance of duplicate DB operations under normal circumstances, when there is no failure. However, in case of a failure, if there is one or more redundant nodes with queues, the queue will fail over to one of those, and the new active queue will continue to process the events. In this case there is a possibility that some events may be duplicated (if the queue was active/sending during a failure there will be duplicate events), and those events will be marked as possible duplicates (AsyncEvent.getPossibleDuplicate will return true for such events). This allows you to check for duplicates and decide what to do.