以下是一个使用ActiveMQ主题订阅者的示例代码,可以使消息数量翻倍:
import org.apache.activemq.ActiveMQConnectionFactory;
import javax.jms.*;
public class TopicSubscriberExample {
public static void main(String[] args) {
// ActiveMQ连接工厂
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616");
try {
// 创建连接
Connection connection = connectionFactory.createConnection();
connection.start();
// 创建会话
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
// 创建主题
Topic topic = session.createTopic("myTopic");
// 创建主题订阅者
MessageConsumer consumer1 = session.createConsumer(topic);
MessageConsumer consumer2 = session.createConsumer(topic);
// 设置消息监听器
consumer1.setMessageListener(new MessageListener() {
@Override
public void onMessage(Message message) {
try {
System.out.println("Consumer 1: Received message - " + ((TextMessage)message).getText());
} catch (JMSException e) {
e.printStackTrace();
}
}
});
consumer2.setMessageListener(new MessageListener() {
@Override
public void onMessage(Message message) {
try {
System.out.println("Consumer 2: Received message - " + ((TextMessage)message).getText());
} catch (JMSException e) {
e.printStackTrace();
}
}
});
// 等待消息
Thread.sleep(5000);
// 关闭连接
consumer1.close();
consumer2.close();
session.close();
connection.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
上述代码创建了两个主题订阅者,并通过设置消息监听器来处理接收到的消息。当有消息发布到"myTopic"主题时,两个订阅者将分别收到并处理消息,从而使消息数量翻倍。