這個是監聽器
public static void main(String[] args) throws JMSException {
ConnectionFactory factory = new ActiveMQConnectionFactory("manage","123456","tcp://localhost:61616");
Connection connection = factory.createConnection();
connection.start();
final Session session = connection.createSession(false/*支持事務*/, Session.AUTO_ACKNOWLEDGE);
Destination queue = AdvisorySupport.getProducerAdvisoryTopic(session.createTopic(">"));
MessageConsumer consumer = session.createConsumer(queue);
consumer.setMessageListener(new MessageListener() {
public void onMessage(Message message) {
System.out.println(message);
}
});
}
activemq.xml 也配置了
<destinationPolicy>
<policyMap>
<policyEntries>
<policyEntry topic=">" advisoryForConsumed="true" > </policyEntry>
</policyEntries>
</policyMap>
</destinationPolicy>
隨便一個訂閱端
public static void main( String[] args ) throws JMSException, IOException {
//創建連接工廠
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("root","123456","tcp://127.0.0.1:61616");
//創建連接
Connection connection = connectionFactory.createConnection();
//啟動
connection.start();
//創建session物件 false表示是否自動提交;
Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);
//創建佇列 des的子類!
Topic topic = session.createTopic("test");
//創建消費者
MessageConsumer messageConsumer = session.createConsumer(topic);
messageConsumer.setMessageListener(new MessageListener() {
public void onMessage(Message message) {
TextMessage textMessage = (TextMessage) message;
try {
System.out.println("PUB:"+textMessage.getText());
} catch (JMSException e) {
e.printStackTrace();
}
}
});
System.in.read();
//關閉資源
messageConsumer.close();
session.close();
connection.close();
}
這個訂閱端建立時候監聽器無法監聽到SUB 的連接資訊
uj5u.com熱心網友回復:
解決了,應該使用AdvisorySupport.getConnectionAdvisoryTopic(); 這個還獲取。。。可以監聽斷開和連接資訊 ,官網示例作廢
public static void main(String[] args) throws JMSException {
ConnectionFactory factory = new ActiveMQConnectionFactory("manage","123456","tcp://localhost:61616");
Connection connection = factory.createConnection();
connection.start();
final Session session = connection.createSession(false/*支持事務*/, Session.AUTO_ACKNOWLEDGE);
ActiveMQTopic test = AdvisorySupport.getConnectionAdvisoryTopic();
MessageConsumer consumer = session.createConsumer(test);
consumer.setMessageListener(new MessageListener() {
public void onMessage(Message message) {
System.out.println(message);
}
});
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/88883.html
標籤:Java EE
