Messaging has always been an interesting topic to me since the start of my career. The Java ecosystem has adopted many different flavors of event-driven programming over the years. We have the JMS (Java Message Service)
API since 1998 and it is still serving the same purpose. Architects prefer Spring integration, Camel, and other platform APIs today over pure JMS solutions. Coming to the current age of message brokers, we have overall solutions like AMQP brokers (ActiveMQ, RabbitMQ, QPid, IronMQ, and many more), streaming solutions (Kafka and cloud-provided options), ...