I am looking for a lightweight distributed single-producer multiple-consumer message service for the jvm. I would like the service to be able to run in the same process as the producer. It only needs to support 10s of readers (maybe low 100s at most), but it needs to be able to have a high throughput. Each message needs to go to exactly one consumer and it does not matter which one. There should only be a bounded buffer and producer should block the buffer is full. Consumers should block if there are no messages available. There should be a way for the producer to signal end of data and shut the service down once all consumers have received the end of data signal. Full blown message queues like RabbitMQ, ZeroMQ & Kafka do not seem appropriate for this scenario and I have not found anything else that is. I would prefer a Scala library, but any JVM language is fine.
Akka should be able to support that - http://akka.io/ .
You can also check out kestrel - https://github.com/robey/kestrel