There is no way to guarantee the ordering when the listener is set to async. If you want something like that you could have the listener be sync but then send the operation to to a single thread executor.
There are a few other points you should know as well.
- Even with sync listeners there is no way to guarantee ordering of notifications of different keys. The notification is sent while the lock for that key is held, so if you have different keys they are different locks.
- What type of cache are you using? If you are using a Distributed Cache then there is no way to guarantee all the events will go to the same node to be ordered even. If so you should look at the new Community feature in Infinispan 7 Clustered Listeners http://blog.infinispan.org/2014/03/embedded-cluster-listeners-in.html