ActiveMQ 实现了 JMS(Java Message Service)规范,它们的关系如下:
- JMS 是一套 Java 消息服务的API规范,定义了消息生产、消费等功能的接口。ActiveMQ 实现了这套接口规范,提供了消息服务的具体实现。
- 开发者可以使用 JMS API 进行开发,与具体的消息中间件(ActiveMQ,RabbitMQ等)脱耦合。
- ActiveMQ 中提供的 ConnectionFactory、Queue、Topic、MessageProducer、MessageConsumer 等都是实现了 JMS 中对应的接口。
JMS 代码示例:
ConnectionFactory factory = new ActiveMQConnectionFactory(url);
Connection connection = factory.createConnection();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
// Send message
Queue queue = session.createQueue("myQueue");
MessageProducer producer = session.createProducer(queue);
producer.send(session.createTextMessage("Hello"));
// Receive message
Queue queue = session.createQueue("myQueue");
MessageConsumer consumer = session.createConsumer(queue);
Message message = consumer.receive();
ActiveMQ 代码示例:
// 使用 ActiveMQ 的 ConnectionFactory
ConnectionFactory factory = new ActiveMQConnectionFactory(url);
// 其他与 JMS 示例相同
可以看到,生产者和消费者的代码主要使用 JMS API,很少依赖 ActiveMQ 本身的 API,这就是 JMS 规范带来的好处。
总之,JMS 定义了规范,ActiveMQ 实现了规范。JMS 为开发者提供了统一的消息服务 API,屏蔽了具体消息中间件的差异,提高了开发效率和代码可移植性。