1. 程式人生 > >JMS&MQ,從入門到精通(八)

JMS&MQ,從入門到精通(八)

本文我們來介紹一下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叢集