03.Spring集成ActiveMq-topic
先启动订阅者,再启动发布者,否则发布的消息是废消息
package com.serlfy.study.activemq.queue;
import java.io.IOException;
import javax.jms.Connection;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.MessageListener;
import javax.jms.Queue;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.jms.Topic;
import org.apache.activemq.ActiveMQConnectionFactory;
public class JmsConsumer_topic {
private static final String URL="tcp://192.168.0.106:61616";
private static final String TOPIC_NAME="topic01";
public static void main(String[] args) throws JMSException, IOException {
System.out.println("3号消费者!");
ActiveMQConnectionFactory factory=new ActiveMQConnectionFactory(URL);
Connection connection=factory.createConnection();
connection.start();
Session session=connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Topic topic=session.createTopic(TOPIC_NAME);
MessageConsumer consumer=session.createConsumer(topic);
//利用消息监听器
consumer.setMessageListener(new MessageListener() {
@Override
public void onMessage(Message message) {
if(null!=message&& message instanceof TextMessage){
TextMessage textMessage=(TextMessage) message;
try {
System.out.println("consumer接收消息:"+textMessage.getText());
} catch (JMSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
});
System.in.read();//保持会话
consumer.close();
session.close();
connection.close();
}
}
3.3.3 发布者
package com.serlfy.study.activemq.queue;
import javax.jms.Connection;
import javax.jms.JMSException;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.jms.Topic;
import org.apache.activemq.ActiveMQConnectionFactory;
public class JmsProduce_topic {
private static final String URL="tcp://192.168.0.106:61616";
private static final String TOPIC_NAME="topic01";
public static void main(String[] args) throws JMSException {
ActiveMQConnectionFactory factory=new ActiveMQConnectionFactory(URL);
Connection connection=factory.createConnection();
connection.start();
Session session=connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Topic topic=session.createTopic(TOPIC_NAME);
MessageProducer producer=session.createProducer(topic);
for(int i=0;i<3;i++){
TextMessage msg=session.createTextMessage("topic msg----0"+i);
producer.send(msg);
}
System.out.println("发送完成!");
producer.close();
session.close();
connection.close();
}
}