在ActiveMQ中,可以使用消息过滤器(Message Filters)来限制订阅数量。下面是一个示例代码,演示如何使用消息过滤器限制订阅数量:
import org.apache.activemq.ActiveMQConnectionFactory;
import javax.jms.*;
public class Subscriber {
public static void main(String[] args) {
try {
// 创建连接工厂
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616");
// 创建连接
Connection connection = connectionFactory.createConnection();
connection.start();
// 创建会话
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
// 创建目标(队列或主题)
Topic destination = session.createTopic("topicName");
// 创建消费者
MessageConsumer consumer = session.createConsumer(destination, "JMSPriority > 5");
// 设置消息监听器
consumer.setMessageListener(new MessageListener() {
public void onMessage(Message message) {
try {
// 处理消息
System.out.println("Received message: " + ((TextMessage) message).getText());
} catch (JMSException e) {
e.printStackTrace();
}
}
});
// 等待消息
Thread.sleep(10000);
// 关闭连接
consumer.close();
session.close();
connection.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
上面的代码创建了一个消费者,使用消息过滤器限制只接收JMSPriority
大于5的消息。你可以根据需要修改过滤条件。