JMS&MQ,從入門到精通(八)
阿新 • • 發佈:2019-02-19
本文我們來介紹一下TemporaryQueue和TemporaryQueue的使用,
TemporaryQueue和TemporaryTopic,從字面上就可以看出它們是“臨時”的目的地。可以通過Session來建立,例如: TemporaryQueue replyQueue = session.createTemporaryQueue(); 雖然它們是由Session來建立的,但是它們的生命週期確實整個Connection。如果在一個Connection上建立了兩個Session, 則一個Session建立的TemporaryQueue或TemporaryTopic也可以被另一個Session訪問。那如果這兩個Session是由不同的Connection建立, 則一個Session建立的TemporaryQueue不可以被另一個Session訪問。 另外,它們的主要作用就是用來指定回覆目的地, 即作為JMSReplyTo。 在下面的例子中,先建立一個Connection,然後建立兩個Session,其中一個Session建立了一個TemporaryQueue, 另一個Session在這個TemporaryQueue上讀取訊息。
一個簡單的例項
ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("vm://localhost");
Connection connection = factory.createConnection();
connection.start();
Queue queue = new ActiveMQQueue("testQueue2");
final Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
//使用session建立一個TemporaryQueue。
TemporaryQueue replyQueue = session.createTemporaryQueue ();
//接收訊息,並回復到指定的Queue中(即replyQueue)
MessageConsumer comsumer = session.createConsumer(queue);
comsumer.setMessageListener(new MessageListener() {
public void onMessage(Message m) {
try {
System.out.println("Get Message: " + ((TextMessage) m).getText());
MessageProducer producer = session.createProducer (m.getJMSReplyTo());
producer.send(session.createTextMessage("ReplyMessage"));
} catch (JMSException e) {
}
}
});
//使用同一個Connection建立另一個Session,來讀取replyQueue上的訊息。
Session session2 = connection.createSession(true, Session.AUTO_ACKNOWLEDGE);
MessageConsumer replyComsumer = session2.createConsumer(replyQueue);
replyComsumer.setMessageListener(new MessageListener() {
public void onMessage(Message m) {
try {
System.out.println("Get reply: " + ((TextMessage) m).getText());
} catch (JMSException e) {
}
}
});
MessageProducer producer = session.createProducer(queue);
TextMessage message = session.createTextMessage("SimpleMessage");
message.setJMSReplyTo(replyQueue);
producer.send(message);
我們來看一下執行結果
現在我們的連線都是用的虛擬連線,但是實際應用中肯定不是這麼做的,實際開發中我們需要下載apache-activemq-5.14.5-bin.tar.gz 手動執行
apache-activemq-5.14.5//bin/activemq.jar start
然後
ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory();
factory.setPassword("admin");
factory.setUserName("admin");
factory.setBrokerURL("tcp://localhost:61616");
Connection connection = factory.createConnection();
connection.start();
這裡的密碼是預設密碼,需要啟動activeMq,activeMq也有自己的UI管理頁面,啟動之後
http://127.0.0.1:8161/admin/,即可看到頁面,,預設密碼:admin/admin
到此為止關於activeMq對於JMS的實現,基本介紹完畢,後續章節介紹rabbitMq對於JMS的實現.以及rabbitMq叢集