您的位置:首页 > 其它

ActiveMQ发布订阅模式

2016-08-17 15:09 393 查看
编写Test实现activeMQ消息发布。

import javax.jms.Connection;
import javax.jms.DeliveryMode;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.jms.Topic;

import org.apache.activemq.ActiveMQConnectionFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Test {
public static void main(String[] args) throws Exception {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
"classpath:spring-context.xml");

ActiveMQConnectionFactory factory =  (ActiveMQConnectionFactory) context.getBean("targetConnectionFactory");
Connection connection = factory.createConnection();
connection.start();

Session session = connection.createSession(false,
Session.AUTO_ACKNOWLEDGE);
Topic topic = session.createTopic("topMessage");

MessageProducer producer = session.createProducer(topic);
producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);

while (true) {
TextMessage message = session.createTextMessage();
message.setText(System.currentTimeMillis()+"");
producer.send(message);
System.out.println("发送消息: " + message.getText());

try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}

}

}


编程Test2实现客户端1订阅消息。Test3实现客户端订阅消息。

import javax.jms.Connection;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.MessageListener;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.jms.Topic;

import org.apache.activemq.ActiveMQConnectionFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Test2 {
public static void main(String[] args) throws Exception {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
"classpath:spring-context.xml");

ActiveMQConnectionFactory factory = (ActiveMQConnectionFactory) context
.getBean("targetConnectionFactory");
Connection connection = factory.createConnection();
connection.start();

Session session = connection.createSession(false,
Session.AUTO_ACKNOWLEDGE);
Topic topic = session.createTopic("topMessage");

MessageConsumer consumer = session.createConsumer(topic);
consumer.setMessageListener(new MessageListener() {
public void onMessage(Message message) {
TextMessage tm = (TextMessage) message;
try {
System.out.println("客户端1接收消息: " + tm.getText());
} catch (JMSException e) {
e.printStackTrace();
}
}
});
}

}


import javax.jms.Connection;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.MessageListener;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.jms.Topic;

import org.apache.activemq.ActiveMQConnectionFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Test3 {
public static void main(String[] args) throws Exception {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
"classpath:spring-context.xml");

ActiveMQConnectionFactory factory = (ActiveMQConnectionFactory) context
.getBean("targetConnectionFactory");
Connection connection = factory.createConnection();
connection.start();

Session session = connection.createSession(false,
Session.AUTO_ACKNOWLEDGE);
Topic topic = session.createTopic("topMessage");

MessageConsumer consumer = session.createConsumer(topic);
consumer.setMessageListener(new MessageListener() {
public void onMessage(Message message) {
TextMessage tm = (TextMessage) message;
try {
System.out.println("客户端2接收消息: " + tm.getText());
} catch (JMSException e) {
e.printStackTrace();
}
}
});
}

}


分别运行Test1.2.3.即可。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  activemq 发布