1.向消息中間件寫入消息
@Test
public void testTopicSend() throws JMSException {
ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory();
Connection connection = factory.createConnection();
connection.start();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Topic topic = session.createTopic("topic_test");
MessageProducer producer = session.createProducer(topic);
for(int i = 0;i < 10;i++) {
MapMessage message = session.createMapMessage();
message.setString("username", "djc");
message.setString("password", "123456");
producer.send(message);
}
session.close();
connection.close();
}
2,手動方式實現消息的消費
@Test
public void testTopicReceiver() throws JMSException {
ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory();
Connection connection = factory.createConnection();
connection.start();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Topic topic = session.createTopic("topic_test");
MessageConsumer consumer = session.createConsumer(topic);
MapMessage message = (MapMessage) consumer.receive();
System.out.println(message.getString("username"));
session.close();
connection.close();
}
3.監聽器方式實現消息的消費
可同時開啓多個監聽器測試
@Test //監聽器1
public void testTopicReceiverListener1() throws JMSException {
ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory();
Connection connection = factory.createConnection();
connection.start();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Topic topic = session.createTopic("topic_test");
MessageConsumer consumer = session.createConsumer(topic);
consumer.setMessageListener(new MessageListener() {
@Override
public void onMessage(Message arg0) {
try {
MapMessage message = (MapMessage) arg0;
System.out.println("Listener1===用戶名是:"+message.getString("username"));
} catch (JMSException e) {
e.printStackTrace();
}
}
});
while(true);
}
@Test //監聽器2
public void testTopicReceiverListener2() throws JMSException {
ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory();
Connection connection = factory.createConnection();
connection.start();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Topic topic = session.createTopic("topic_test");
MessageConsumer consumer = session.createConsumer(topic);
consumer.setMessageListener(new MessageListener() {
@Override
public void onMessage(Message arg0) {
try {
MapMessage message = (MapMessage) arg0;
System.out.println("Listener2===用戶名是:"+message.getString("username"));
} catch (JMSException e) {
e.printStackTrace();
}
}
});
while(true);
}
注意:Topic模式消費者一方要先開啓,監聽器1,監聽器2模仿多客戶端訪問