什么是ActiveMQ?它是如何工作的?

ActiveMQ 是 Apache 出品的开源消息中间件,它实现了 JMS 规范,支持集群,故障转移,高可用等功能。

ActiveMQ 的工作原理如下:

  1. 生产者发送消息到 Broker,Broker 将消息 persisted 到存储介质(KahaDB、LevelDB、JDBC等)。
ConnectionFactory factory = new ActiveMQConnectionFactory(url);
Connection connection = factory.createConnection();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Queue queue = session.createQueue("myQueue"); 
MessageProducer producer = session.createProducer(queue);
producer.send(session.createTextMessage("Hello"));
  1. 消费者从 Broker 获取消息,Broker 将存储介质中的消息返回给消费者。
ConnectionFactory factory = new ActiveMQConnectionFactory(url);  
Connection connection = factory.createConnection();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Queue queue = session.createQueue("myQueue");
MessageConsumer consumer = session.createConsumer(queue);
Message message = consumer.receive();
  1. Broker 会持续跟踪消息的存储和转发,保证消息的持久化和最终投递。
  2. ActiveMQ 支持消息的管理和监控,提供管理控制台以及 JMX 方式的管理机制。
  3. ActiveMQ 支持丰富的路由规则,可以根据消息头和属性灵活路由消息。
  4. ActiveMQ 支持连接的集群,主从,抗失效性能,保证高可靠的消息服务。