列队模式的消息演示
完成的代码下载地址
http://download.csdn.net/download/weixin_39549656/10225164
工程目录结构
生产者AppProducer .java
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;
//生产者生产消息
public class AppProducer {
private static final String url="tcp://127.0.0.1:61616/";
private static final String queueName="queue-test";
public static void main(String[] args) throws Exception {
//1.创建ConnectionFactory
ConnectionFactory acf = new org.apache.activemq.ActiveMQConnectionFactory(url);
//2.创建Connection
Connection createConnection = acf.createConnection();
//3,启动连接
createConnection.start();
//4.创建会话
Session session = createConnection.createSession(false, Session.AUTO_ACKNOWLEDGE);
//5创建一个目标
Destination des = session.createQueue(queueName);
//6创建一个生产者
MessageProducer createProducer = session.createProducer(des);
for (int i = 0; i < 100; i++) {
//7.创建消息
TextMessage tm =session.createTextMessage("test"+i);
//8.发布消息
createProducer.send(tm);
System.out.println(tm.getText());
}
//9.关闭连接
createConnection.close();
}
}
消费者AppConsumer .java
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.MessageListener;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;
//消费者消费消息
public class AppConsumer {
public static void main(String[] args) throws Exception {
Xiaofei();
}
public static void Xiaofei() throws JMSException{
final String url="tcp://127.0.0.1:61616/";
final String queueName="queue-test";
//1.创建ConnectionFactory
ConnectionFactory acf = new org.apache.activemq.ActiveMQConnectionFactory(url);
//2.创建Connection
Connection createConnection = acf.createConnection();
//3,启动连接
createConnection.start();
//4.创建会话
Session session = createConnection.createSession(false, Session.AUTO_ACKNOWLEDGE);
//5创建一个目标
Destination des = session.createQueue(queueName);
//6.创建一个消费者
MessageConsumer consumer = session.createConsumer(des);
//7.创建一个监听器
consumer.setMessageListener(new MessageListener() {
@Override
public void onMessage(Message message) {
TextMessage textMessage=(TextMessage) message;
try {
System.out.println("消费者接受消息"+textMessage.getText());
} catch (JMSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
// //9.关闭连接 这个链接因该是一直监听的,关闭当然接收不到信息
// createConnection.close();
}
}
先生产后消费
主题模式的消息演示(消费者要先订阅(先生产者运行,才可以接到消息))
生产者代码AppProducer.java
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;
//生产者生产消息
public class AppProducer {
private static final String url="tcp://127.0.0.1:61616/";
private static final String topicName="topic-test";
public static void main(String[] args) throws Exception {
//1.创建ConnectionFactory
ConnectionFactory acf = new org.apache.activemq.ActiveMQConnectionFactory(url);
//2.创建Connection
Connection createConnection = acf.createConnection();
//3,启动连接
createConnection.start();
//4.创建会话
Session session = createConnection.createSession(false, Session.AUTO_ACKNOWLEDGE);
//5创建一个目标
Destination des = session.createQueue(topicName);
//6创建一个生产者
MessageProducer createProducer = session.createProducer(des);
for (int i = 0; i < 100; i++) {
//7.创建消息
TextMessage tm =session.createTextMessage("test"+i);
//8.发布消息
createProducer.send(tm);
System.out.println(tm.getText());
}
//9.关闭连接
createConnection.close();
}
}
消费者代码
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.MessageListener;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;
//消费者消费消息
public class AppConsumer {
public static void main(String[] args) throws Exception {
Xiaofei();
}
public static void Xiaofei() throws JMSException{
final String url="tcp://127.0.0.1:61616/";
final String topicName="topic-test";
//1.创建ConnectionFactory
ConnectionFactory acf = new org.apache.activemq.ActiveMQConnectionFactory(url);
//2.创建Connection
Connection createConnection = acf.createConnection();
//3,启动连接
createConnection.start();
//4.创建会话
Session session = createConnection.createSession(false, Session.AUTO_ACKNOWLEDGE);
//5创建一个目标
Destination des = session.createTopic(topicName);
//6.创建一个消费者
MessageConsumer consumer = session.createConsumer(des);
//7.创建一个监听器
consumer.setMessageListener(new MessageListener() {
@Override
public void onMessage(Message message) {
TextMessage textMessage=(TextMessage) message;
try {
System.out.println("消费者接受消息"+textMessage.getText());
} catch (JMSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
// //9.关闭连接 这个链接因该是一直监听的,关闭当然接收不到信息
// createConnection.close();
}
}