activemq---点对点/发布订阅模式简单代码示例
activemq 消息模式流程: ConnnectionFactory --> Connection --> Session --> Message
---ConnectionFactory,通过连接工厂创建连接
ConnectionFactory factory = new ActiveMQConnectionFactory("xxx.properties");
Connection connection = factory.createConnecion();
connection.start();
---session,创建会话
final Session session = connection.createSession(false, AUTO_ACKNOWLEDGE);
---设置JMSReplyTo为一个Destination,表示需要回复的目的地
message.setJMSReplyTo(replyQueue);
---message,创建消息
Message message = session.createTextMessage("jms-active");
---queue,创建队列
Queue queue = new ActiveMQQueue("active_queue");
---topic,创建topic
Topic topic = new ActiveMQTopic("active_topic");
queue与topic不同之处,就在于此。二者的创建方式的不同
---producer,创建生产者
MessageProducer producer = session.createProducer(queue);
---设置是否可持久化
producer.setDeliveryMode(DeliveryMode.persistent或nonpersistent);
--- 设置消息的有效期
producer.setTimeToLive(3600000); 默认是0表示永不过期
---send message,发送消息至queue
producer.send(message);
---consumer,创建消费者
MessageConsumer consumer = session.createConsumer(queue);
---创建只接受特定消息的一个消费者,selector是一个字符串,用来过来消息
sesssion.createConsumer(destination, selector);
---receive msg,接受消息
第一种receive方法没有设置等待时间,所以消费者会一直等待。可通过int timeout设置等待的超时时间
Message receiveMsg = consumer.receive();
(TextMessge)receiveMsg.getText();
可知这种方式不够友好,可改用监听的方式来消费消息
consumer.setMessageListener(new MessageListener(){
@Override
public void onMessage(Message m) {
TextMessage textMsg = (TextMessage) m;
try{
System.out.println(textMsg.getText());
}catch(JMSException e) {
xxx
}
}
});
消费者与生产者通过同一queue来绑定一对一关系
activemq---点对点/发布订阅模式简单代码示例的更多相关文章
- ACtiveMQ中间件-发布订阅模式
前言:ActiveMQ学习心得 1.MQ是什么 MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法.应用程序通过读写出入队列的消息(针对应用程序的数据)来通信, ...
- SpringBoot2.0之整合ActiveMQ(发布订阅模式)
发布订阅模式与前面的点对点模式很类似,简直一毛一样 注意:发布订阅模式 先启动消费者 公用pom: <project xmlns="http://maven.apache.org/PO ...
- ActiveMQ (二)—发布订阅模式
ActiveMQ的另一种模式就SUB/HUB即发布订阅模式,是SUB/hub就是一拖N的USB分线器的意思.意思就是一个来源分到N个出口.还是上节的例子,当一个订单产生后,后台N个系统需要联动,但有一 ...
- 【ActiveMQ】- 发布/订阅模式
publish/subscribe 特点:A发送的消息可以被所有监听A的对象的接收,就好比学校的广播,所有的学生都可以收听校园广播信息. 消息生产者: package com.zhiwei.advan ...
- 理解JavaScript设计模式与开发应用中发布-订阅模式的最终版代码
最近拜读了曾探所著的<JavaScript设计模式与开发应用>一书,在读到发布-订阅模式一章时,作者不仅给出了基本模式的通用版本的发布-订阅模式的代码,最后还做出了扩展,给该模式增加了离线 ...
- Javascript中理解发布--订阅模式
Javascript中理解发布--订阅模式 阅读目录 发布订阅模式介绍 如何实现发布--订阅模式? 发布---订阅模式的代码封装 如何取消订阅事件? 全局--发布订阅对象代码封装 理解模块间通信 回到 ...
- [转] Javascript中理解发布--订阅模式
发布订阅模式介绍 发布---订阅模式又叫观察者模式,它定义了对象间的一种一对多的关系,让多个观察者对象同时监听某一个主题对象,当一个对象发生改变时,所有依赖于它的对象都将得到通知. 现实生活中的发布- ...
- 【转】Javascript中理解发布--订阅模式
Javascript中理解发布--订阅模式 阅读目录 发布订阅模式介绍 发布---订阅模式又叫观察者模式,它定义了对象间的一种一对多的关系,让多个观察者对象同时监听某一个主题对象,当一个对象发生改变时 ...
- RabbitMQ六种队列模式-发布订阅模式
前言 RabbitMQ六种队列模式-简单队列RabbitMQ六种队列模式-工作队列RabbitMQ六种队列模式-发布订阅 [本文]RabbitMQ六种队列模式-路由模式RabbitMQ六种队列模式-主 ...
随机推荐
- php strtr()函数 语法
php strtr()函数 语法 作用:转换字符串中的某些字符直线电机生产厂家 语法:strtr(string,from,to)或者strtr(string,array) 参数: 参数 描述 stri ...
- [CSP-S模拟测试]:Divisors(数学)
题目描述 给定$m$个不同的正整数$a_1,a_2,...,a_m$,请对$0$到$m$每一个$k$计算,在区间$[1,n]$里有多少正整数是$a$中恰好$k$个数的约数. 输入格式 第一行包含两个正 ...
- DVBS/S2功能
- 线段树2(P3373)
传送 感谢洛谷题解让我理清了这一撮标记 这里多了一个乘法操作,乘法的优先级高于加法.我们来思考一下有关标记的问题. 首先由两种操作,可以想到要有两个标记,一个标记乘法(mul[k]),一个标记加法(a ...
- ruby的实例变量
class Box def initialize(w,h) @width,@height=w,h end def getArea @height*@width end end class BigBox ...
- java 为啥可打印date
打印一个对象的时候,会打印出它的toString方法的返回值,Date重写了toString方法.
- MySQL 导入导出 CSV 文件
导入 导出 清空表中的所有数据 注意事项 常见问题 ERROR 1290 (HY000): The MySQL server is running with the --secure-file-pri ...
- 第 13 章 python并发编程之io模型
一.IO模型介绍 同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞(non-blocking)IO分别是什么,到底有什么区别?这个问 ...
- Borland C++ Builder 编译绿色Exe程序
按照“打开Project/Option 翻到Packages页,去掉Build with runtime packages前面的勾. http://www.jinyuanbao.cn翻到Linker页 ...
- vlan vtp配置
vlan vtp配置 VTP:Vlan Trunking Protocol 用于管理VLAN(统一创建.修改.删除).用来同步vlan. VTP的原理 VTP模式(服务器,客户端和透明模式) ...