activeMQ发送与接受消息模板代码

发送着:


/*** */
package activemqAPI.helloworld;import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.DeliveryMode;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;import org.apache.activemq.ActiveMQConnectionFactory;/*** @author weijie** 2018年9月3日*/
public class Sender {public static void main(String[] args) throws JMSException {//第一步:建立ConnnectionFactory工厂对象,需要填入用户名,密码,以及连接地址,默认端口:61616(activemq.xml中可以改) ,均使用默认即可,tcp://localhost:61616ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(ActiveMQConnectionFactory.DEFAULT_USER, ActiveMQConnectionFactory.DEFAULT_PASSWORD, "tcp://localhost:61616");//第二步:通过ConnectionFactory工厂对象我们创建一个Connection连接,并且调用Connection的start方法开启连接,Connection默认是关闭的Connection connection = connectionFactory.createConnection();connection.start();//第三步:通过Connection对象创建Session会话(上见下文环境对象),用于接收消息,参数配置1为是否启用事务,参数配置2为签收模式,一般设置自动签收
//      Session session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE); //收到消息后,要手动去签收消息 Session session = connection.createSession(Boolean.TRUE, Session.CLIENT_ACKNOWLEDGE); //第四步:通过Session创建Destination对象 ,指的是一个客户端用来指定生产消息目标和消费消息来源的对象,在PTP模式中,Destination被称作Topic即主题,在程序中可以使用多个Queue和TopicDestination destination = session.createQueue("queue1 ");//第五步:我们需要Session对象创建消息的发送和接受对象(生产者和消费者)MessageProducer/MessageConsumerMessageProducer messageProducer = session.createProducer(destination);//第六步:我们可以使用MessageProducer的serDeliveyMode方法为其设置持久化特性和非持久化特性(DeliveryMode)messageProducer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);//第七步:最后我们使用JMS规范的TextMessage形式创建数据(通过Session对象),并用MessageProducer的send方法发送数据,同理客户端使用receive方法接受消息TextMessage textMessage = session.createTextMessage();textMessage.setText("hello java");messageProducer.send(textMessage);//使用事务提交session.commit();if(connection != null) {connection.close();}}
}

接收者:

/*** */
package activemqAPI.helloworld;import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageConsumer;
import javax.jms.Session;
import javax.jms.TextMessage;import org.apache.activemq.ActiveMQConnectionFactory;/*** @author weijie** 2018年9月3日*/
public class Receiver {public static void main(String[] args) throws JMSException {//第一步:建立ConnnectionFactory工厂对象,需要填入用户名,密码,以及连接地址,默认端口:61616(activemq.xml中可以改) ,均使用默认即可,tcp://localhost:61616ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(ActiveMQConnectionFactory.DEFAULT_USER, ActiveMQConnectionFactory.DEFAULT_PASSWORD, "tcp://localhost:61616");//第二步:通过ConnectionFactory工厂对象我们创建一个Connection连接,并且调用Connection的start方法开启连接,Connection默认是关闭的Connection connection = connectionFactory.createConnection();connection.start();//第三步:通过Connection对象创建Session会话(上见下文环境对象),用于接收消息,参数配置1为是否启用事务,参数配置2为签收模式,一般设置自动签收//三种签收模式的优缺点//使用事务的方式进行消息的发送
//      Session session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE); //使用clent要手动去签收,消息才能被消费Session session = connection.createSession(Boolean.TRUE, Session.CLIENT_ACKNOWLEDGE); //第四步:通过Session创建Destination对象 ,指的是一个客户端用来指定生产消息目标和消费消息来源的对象,在PTP模式中,Destination被称作Topic即主题,在程序中可以使用多个Queue和TopicDestination destination = session.createQueue("queue1 ");//第五步:我们需要Session对象创建消息的发送和接受对象(生产者和消费者)MessageProducer/MessageConsumerMessageConsumer messageConsumer = session.createConsumer(destination);//第七步:最后我们使用JMS规范的TextMessage形式创建数据(通过Session对象),并用MessageProducer的send方法发送数据,同理客户端使用receive方法接受消息while(true) {TextMessage msg = (TextMessage)messageConsumer.receive();//手动签收msg.acknowledge();System.out.println("收到的内容:"+msg .getText());if(msg == null)break;}if(connection != null) {connection.close();   }}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/509245.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

做一个优秀的项目/产品经理

1、工作中,在时间、质量、成本三者之间找到平衡,带领团队成功研发并上线项目。 解决好以下细节问题,就达到一个合格IT项目经理了: 项目的由来,为什么要建立这么一个系统? 项目有计划吗? 项目的需…

一个程序员的日常书单

本想谈谈读书这个话题,想来想起觉得无从下手,就此作罢.毕业这几年,一直不敢放松,在现代这个互联网时代更加认同萧抡谓的”一日不读书,胸臆无佳想;一月不读书,耳目失清爽”.如果非要给自己找个读书的理由的话,这句诗就是最好的理由:”胸藏文墨虚若骨,腹有诗书气自华”. 与书结缘…

【转载】ssdb安装部署

转载地址:https://www.cnblogs.com/dyfblog/p/5894518.html ssdb是一款类似于redis的nosql数据库,不过redis是基于内存的,服务器比较昂贵,ssdb则是基于硬盘存储的,很容易扩展,对于一些对速度要求不是太高的…

2017年回顾及总结

从2015毕业至今,在c开发领域算起来已经差不多两年多的时间了。在这三年的时间里,涉及到的c领域的技术基本上从广度上有了一个大概的学习和认知。各个方面的知识都有所掌握,包括c底层实现,网络通信,并行开发&#xff0c…

Amr and Pins

Description Amr loves Geometry. One day he came up with a very interesting problem. Amr has a circle of radius r and center in point (x, y). He wants the circle center to be in new position (x, y). In one step Amr can put a pin to the border of the circl…

TCP/IP学习

http://blog.csdn.net/column/details/15153.html?

ngnix 作用(通俗易懂)【转载】

作者:RayeWang www.raye.wang/2017/02/24/quan-mian-liao-jie-nginxdao-di-neng-zuo-shi-yao/ 前言 本文只针对Nginx在不加载第三方模块的情况能处理哪些事情,由于第三方模块太多所以也介绍不完,当然本文本身也可能介绍的不完整&#xff0…

C++11并发实战(专栏)

http://blog.csdn.net/column/details/ccia.html?&page2

LCIS

Problem DescriptionAlex has two sequences a_1,a_2,...,a_na​1​​,a​2​​,...,a​n​​ and b_1,b_2,...,b_mb​1​​,b​2​​,...,b​m​​. He wants find a longest common subsequence that consists of consecutive values in increasing order. InputThere are mu…

TimeUnit.SECONDS.sleep()和sleep区别

刚看到TimeUnit.SECONDS.sleep()方法时觉得挺奇怪的,这里怎么也提供sleep方法? public void sleep(long timeout) throws InterruptedException {if (timeout > 0) {long ms toMillis(timeout);int ns excessNanos(timeout, ms);Thread.sleep(ms, …

c++11并发指南系列

https://www.cnblogs.com/haippy/archive/2013/08/27/3284540.html

hashmap另一种初始化

代码&#xff1a; new HashMap<String,Integer>() {{put("a", 0);put("b", 0);put("c", 0);}}; 用处&#xff1a; for (Entry<String, String> entry : set) {value entry.getValue();try {if(k 5) {break;}json new JSONObjec…

怎么去阅读这本书

最近打算对并发编程和网络编程进行一定深度的学习&#xff0c;

理解 shared_ptr实现copy-on-write(COW)

转自&#xff1a;http://blog.csdn.net/zhangxiao93/article/details/52792888 shared_ptr实现COW&#xff08;Copy-On-Write&#xff09; 前不久在《Linux多线程服务端编程使用muduoC网络库》2.8节看到这个内容&#xff0c;一直没有真正理解&#xff0c;后来在书中7.3中再次提…

window连接不上ssdb的问题

window上访问虚拟机ssdb 1&#xff09;首先要修改ssdb 的配置文件ssdb.conf&#xff0c;修改server的节点下ip如下&#xff1a; server节点下的ip意思是绑定哪个ip地址能够访问服务 &#xff0c;也就是说只能通过的ip可以访问ssdb server。 ps&#xff1a; 127.0.0.1 //绑定…

分布式系统的工程化开发方法

转自&#xff1a;http://blog.csdn.net/solstice/article/details/5950190 以下是我在珠三角技术沙龙 2010Q4 上的演讲投影片。 演讲视频&#xff1a; http://www.youku.com/playlist_show/id_5238686.html ---------- ---------- ------

java操作ssdb:set、map、list..

网上收集的代码模板&#xff1a; import com.udpwork.ssdb.*;/** * SSDB Java client SDK demo. */ public class Demo { public static void main(String[] args) throws Exception { SSDB ssdb null; Response resp; byte[] b; ssdb new SSDB("127.0.0.1", 8888…

程序员的知识广度

转自&#xff1a;http://blog.csdn.net/EGEFCXzo3Ha1x4/article/details/79070190 “知识变现”的口号一喊 确实让很多人都摩拳擦掌蓄势待发 那么作为程序员的mu们 不管是思维逻辑&#xff0c;还是知识广度 是不是都迫不及待了 今天&#xff0c;我们也来测试下 【单选题】 1 …

【转载】RocketMQ优秀文章

rocketMq详解&#xff1a;http://blog.csdn.net/column/details/learningrocketmq.html rocketMq实践&#xff1a;https://pan.baidu.com/s/1kTXE4PD rocketMq的原理&#xff1a;https://pan.baidu.com/s/1bogcpgN rocketMq用户指南&#xff1a;https://pan.baidu.com/s/1kT…

多线程---条件变量

互斥器和条件变量的区别&#xff1a;互斥器具有加锁原语&#xff0c;用来进行排他性的访问共享数据&#xff0c;而条件变量具有等待原语&#xff0c;用于等待某个事件的发生。 等待条件变量的正确姿势&#xff1a; void wait() {mutex.lock()while (wait_flag false) {conditi…