When a 'multiple' ack is received, we iterate over pending acks for each listener in order to generate a discrete ack for each. While this is synchronized on the entire pending acks map, addition of a new pending ack can cause a ConcurrentModificationException. sychnronize the put(); add a test to reproduce the issue and to show the correction fixes the problem.
Many of the "integration" tests here require a running RabbitMQ server - they will be skipped if the broker is not detected.
If RabbitMQ is not installed on your system, refer to the instructions for your particular OS here: [http://www.rabbitmq.com/install.html]
Start the server. For example, and a *nix-based system where RabbitMQ has been
installed within /opt/rabbitmq, issue the following command:
> sudo /opt/rabbitmq/sbin/rabbitmq-server start