对于此类消息,其实就是指使用JMS中的发布订阅消息模型的消息,下面是一个简单的例子
消息发布者
01 | package com.googlecode.garbagecan.jmsstudy.activemq.topic; |
03 | import org.apache.activemq.ActiveMQConnectionFactory; |
07 | public class TopicPublisher { |
08 | public static void main(String[] args) throws JMSException { |
09 | ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory( "tcp://localhost:61616" ); |
10 | Connection connection = factory.createConnection(); |
13 | Session session = connection.createSession( false , Session.AUTO_ACKNOWLEDGE); |
14 | Topic topic = session.createTopic( "myTopic.messages" ); |
16 | MessageProducer producer = session.createProducer(topic); |
17 | producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT); |
20 | TextMessage message = session.createTextMessage(); |
21 | message.setText( "message_" + System.currentTimeMillis()); |
22 | producer.send(message); |
23 | System.out.println( "Sent message: " + message.getText()); |
27 | } catch (InterruptedException e) { |
消息订阅者(消息消费者)
01 | package com.googlecode.garbagecan.jmsstudy.activemq.topic; |
03 | import org.apache.activemq.ActiveMQConnectionFactory; |
07 | public class TopicSubscriber { |
08 | public static void main(String[] args) throws JMSException { |
09 | ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory( "tcp://localhost:61616" ); |
10 | Connection connection = factory.createConnection(); |
13 | Session session = connection.createSession( false , Session.AUTO_ACKNOWLEDGE); |
14 | Topic topic = session.createTopic( "myTopic.messages" ); |
16 | MessageConsumer consumer = session.createConsumer(topic); |
17 | consumer.setMessageListener( new MessageListener() { |
18 | public void onMessage(Message message) { |
19 | TextMessage tm = (TextMessage) message; |
21 | System.out.println( "Received message: " + tm.getText()); |
22 | } catch (JMSException e) { |
分别运行两个类,就可以看到Publisher发布的类,Subscriber都可以接受到。