topic 默认是不存在于MQ服务器中的,一旦发送之后,如果没有订阅,消息则丢失。对于普通消费者来说如果错过了这期的消息那就是错过了,对于持久化消费者,可以获取丢失的消息。
首先,activemq区分消费者,是通过clientID和订户名称来区分的。
持久化消费者:
设置1、connection.setClientID("zhangsan");
设置2、MessageConsumer consumer = session.createDurableSubscriber(topic,"zhangsan");
对于持久化消费者,生产者需要如下设置:
//session 创建 produce
MessageProducer producer = session.createProducer(topic);
//生产者设置持久化, 不设置的话,默认就是持久化
producer.setDeliveryMode(DeliveryMode.PERSISTENT);
public class TopicProduct {
public static void main(String[] args) throws Exception {
//创建工厂
ConnectionFactory facroty = new ActiveMQConnectionFactory("tcp://192.168.25.128:61616");
//利用工厂创建链接
Connection connection = facroty.createConnection();
//链接开启'
connection.start();
//