ActiveMQ实战之 Queue点对点消息【转】
对于此类消息,其实就是指使用JMS中的发P2P(点对点)消息模型的消息,下面是一个简单的例子
消息发送者
- package?com.googlecode.garbagecan.jmsstudy.activemq.queue;????
- ??import?org.apache.activemq.ActiveMQConnection;??
- import?org.apache.activemq.ActiveMQConnectionFactory;????
- import?javax.jms.*;????
- public?class?Sender?{??????public?static?void?main(String[]?args)?throws?JMSException?{??
- ????????ConnectionFactory?connectionFactory?=?new?ActiveMQConnectionFactory("tcp://localhost:61616");??????????Connection?connection?=?connectionFactory.createConnection();??
- ????????connection.start();????
- ????????Session?session?=?connection.createSession(false,?Session.AUTO_ACKNOWLEDGE);??????????Destination?destination?=?session.createQueue("myQueue");??
- ??????????????????MessageProducer?producer?=?session.createProducer(destination);??
- ????????producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);????
- ????????while(true)?{??????????????TextMessage?message?=?session.createTextMessage();??
- ????????????message.setText("message_"?+?System.currentTimeMillis());??????????????producer.send(message);??
- ????????????System.out.println("Sent?message:?"?+?message.getText());????
- ????????????try?{??????????????????Thread.sleep(1000);??
- ????????????}?catch?(InterruptedException?e)?{??????????????????e.printStackTrace();??
- ????????????}??????????}??
- ??//??????session.close();??
- //??????connection.stop();??//??????connection.close();??
- ????}??}??
消息接收者
view plaincopy to clipboardprint?- package?com.googlecode.garbagecan.jmsstudy.activemq.queue;????
- import?org.apache.activemq.ActiveMQConnection;??import?org.apache.activemq.ActiveMQConnectionFactory;??
- ??import?javax.jms.*;??
- ??public?class?Receiver?{??
- ????public?static?void?main(String[]?args)?throws?JMSException?{??????????ConnectionFactory?connectionFactory?=?new?ActiveMQConnectionFactory("tcp://localhost:61616");??
- ????????Connection?connection?=?connectionFactory.createConnection();??????????connection.start();??
- ??????????Session?session?=?connection.createSession(false,?Session.AUTO_ACKNOWLEDGE);??
- ????????Destination?destination?=?session.createQueue("myQueue");??????????MessageConsumer?consumer?=?session.createConsumer(destination);??
- ????????consumer.setMessageListener(new?MessageListener()?{??????????????public?void?onMessage(Message?message)?{??
- ????????????????TextMessage?tm?=?(TextMessage)?message;??????????????????try?{??
- ????????????????????System.out.println("Received?message:?"?+?tm.getText());??????????????????}?catch?(JMSException?e)?{??
- ????????????????????e.printStackTrace();??????????????????}??
- ????????????}??????????});??
- ??????????//??????session.close();??
- //??????connection.stop();??//??????connection.close();??
- ????}??}??
分别运行两个类,就可以看到Sender发布的消息,Receiver都可以接受到。