发布/订阅模型(Pub/Sub)是一种消息通信模型,特点是:
- 消息生产者发送消息到主题。
- 消息消费者订阅主题,消费主题中的消息。
- 同一个消息可以被多个消费者消费。
ActiveMQ 中使用 Topic 来实现发布/订阅模型,示例代码如下:
生产者:
ConnectionFactory factory = new ActiveMQConnectionFactory(url);
Connection connection = factory.createConnection();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
// 创建 Topic
Topic topic = session.createTopic("myTopic");
// 消息生产者
MessageProducer producer = session.createProducer(topic);
producer.send(session.createTextMessage("Hello"));
消费者1:
ConnectionFactory factory = new ActiveMQConnectionFactory(url);
Connection connection = factory.createConnection();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
// 消息消费者1
Topic topic = session.createTopic("myTopic");
MessageConsumer consumer = session.createConsumer(topic);
// 消息消费
Message message = consumer.receive();
消费者2:
// 和消费者1的代码相同,订阅相同主题
在发布/订阅模型中:
- 消息生产者发送消息到 Topic。
- 多个消费者可以订阅同一个 Topic。
- 消息会被所有订阅的消费者消费。
发布/订阅模型实现了一对多的消息通信,常用于群发通知、新闻推送等场景。