ActiveMq点对点模式发送、接收消息
来源:互联网 发布:cip数据核字号查询打印 编辑:程序博客网 时间:2024/05/20 18:02
消息发送流程:
1) 客户机发送消息到JMS消息中间件
2) 服务端负责监听JMS消息目的地。
3) 发现JMS里面有消息产生,服务就可以接受消息。
点对点消息发送服务:
1) 消息只能被一个服务接受
2) 多个服务同时监听消息服务器,遵循先来后到原则。
3) 消息一旦被接受,消息自动消失。
4) 如果消息一直没有被接受,消息会等待被接受,直到被接受为止。
// 点对点 发送消息
public class MySendMessageMQ {
public void sendMessageOne() throws Exception {
// 创建消息工厂:参数:协议,地址,端口
ConnectionFactory cf = newActiveMQConnectionFactory(
"tcp://192.168.66.66:61616");
//获取连接
Connectionconnection = cf.createConnection();
//开启连接
connection.start();
//从连接中获取Session
//第一个参数:消息事务
//第二个参数:事务使用自动应答模式
Session session =connection.createSession(false,Session.AUTO_ACKNOWLEDGE);
//获取消息发送目的地:
//创建消息发送目的地,相当于在JMS服务器中开辟一块空间,空间名称oneQueue
//发送消息就发送到oneQueue消息目的地
Queue queue = session.createQueue("oneQueue"); //createQueue 同步模式
//创建消息发送者
MessageProducer producer = session.createProducer(queue);
//创建模拟消息
TextMessage message = new ActiveMQTextMessage();
message.setText("这是一条消息");
//发送
producer.send(message);
//关闭资源
producer.close();
session.close();
connection.close();
}
}
//接受消息:同步模式
public class MyReceiveMessage {
@Test
public void receiveMessageOne() throws Exception{
// 创建消息工厂:参数:协议,地址,端口
ConnectionFactory cf = new ActiveMQConnectionFactory(
"tcp://192.168.66.66:61616");
//获取连接
Connection connection = cf.createConnection();
//开启连接
connection.start();
//从连接中获取Session
//第一个参数:消息事务
//第二个参数:事务使用自动应答模式
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
//获取消息发送目的地:
//创建消息发送目的地,相当于在JMS服务器中开辟一块空间,空间名称oneQueue
//发送消息就发送到oneQueue消息目的地
Queue queue = session.createQueue("oneQueue");
//创建消息接受者
MessageConsumer consumer = session.createConsumer(queue);
//同步接受
Message message = consumer.receive();
if(message instanceof TextMessage){
TextMessage tm = (TextMessage) message;
//转换为TextMessage形式,调用getText()
System.out.println(tm.getText());
}
//关闭资源
consumer.close();
session.close();
connection.close();
}
//接受消息:异步模式:使用监听模式接受消息
@Testpublic void receiveMessageTwo() throws Exception{
// 创建消息工厂:参数:协议,地址,端口
ConnectionFactory cf = new ActiveMQConnectionFactory(
"tcp://192.168.66.66:61616");
//获取连接
Connection connection = cf.createConnection();
//开启连接
connection.start();
//从连接中获取Session
//第一个参数:消息事务
//第二个参数:事务使用自动应答模式
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
//获取消息发送目的地:
//创建消息发送目的地,相当于在JMS服务器中开辟一块空间,空间名称oneQueue
//发送消息就发送到oneQueue消息目的地
Queue queue = session.createQueue("oneQueue");
//创建消息接受者
MessageConsumer consumer = session.createConsumer(queue);
//创建监听器 使用监听的方式接受消息
consumer.setMessageListener(new MessageListener() {
//在监听器内负责接收消息
@Override
public void onMessage(Message message) {
if(message instanceof TextMessage){
TextMessage tm = (TextMessage) message;
try {
System.out.println(tm.getText());
} catch (JMSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
});
System.in.read(); //使监听器一直处于启动状态,等待消息的注入(一直等待外部的输入状态)
//关闭资源
consumer.close();
session.close();
connection.close();
}
}
- ActiveMq点对点模式发送、接收消息
- activeMQ之点对点(p2p)发送与接收消息
- JMS消息发送和接收实例 - 点对点模式
- JMS消息发送和接收实例 - 点对点模式
- ActiveMQ发送消息,接受消息。点对点连接
- ActiveMQ:点对点队列消费者接收不到消息
- 使用ActiveMQ 发送/接收消息
- ActiveMQ消息发送和接收
- ActiveMQ消息发送和接收
- ActiveMQ消息发送和接收
- ActiveMQ 发送消息和接收消息 Demo
- activeMq的点对点发送
- ActiveMQ(一):ActiveMQ入门案例 发送消息和接收消息
- ActiveMQ 点对点消息实现
- ActiveMQ点对点消息实现
- ActiveMQ消息队列的使用--点对点的消息模式
- ActiveMQ 消息的发送和接收
- activemq 通过ajax发送接收消息
- 【Android】Merge讲解与实例
- 为什么static成员函数不能访问非static变量, 不能调用非static成员函数?
- 面试被虐系列_基础数据结构篇_C#集合接口_2
- TensorFlow练习18: 根据姓名判断性别
- bzoj4004 [JLOI2015]装备购买
- ActiveMq点对点模式发送、接收消息
- 链表创建之有头节点空
- latex数学公式
- CSDN日报20170402 ——《我希望进入大学时就能知道的一些事儿》
- sdut离散题目11
- libevent源码分析
- 为什么static成员必须在类外初始化
- TensorFlow练习16: 根据大脸判断性别和年龄
- Circular view path [login3]: would dispatch back to the current handler URL [/Spring_Demo/login3]