关于使用MQ系统解耦的一点思考
2017-11-09 00:00
567 查看
MQ使用场景非常多如异步消息处理、系统解耦、数据同步、流量削峰等,经常在一些博文看到这些词语,就拿系统解耦来说,如用户下单后需要通知库存系统进行扣减库存,通知物流系统进行发货,推荐搜索系统等,这些都是和业务息息相关的,所以不允许出现某个系统接收不到消息的情况,而好多博客、文章并没有说明存在这种情况,如果读者不了解就很容易拿到线上的生产环境,不出问题还好,等出现问题那就是大问题。
我们公司使用的是activeMq,而activeMq默认的topic模式,只是发消息给正在订阅的消费者,如果消费者挂了那就收不到消息了,所以需要设置activeMq的topic为持久订阅模式。
我们公司使用的是activeMq,而activeMq默认的topic模式,只是发消息给正在订阅的消费者,如果消费者挂了那就收不到消息了,所以需要设置activeMq的topic为持久订阅模式。
方法如下:
一、生产者需要设置消息为持久模式
//通过session 创建producer MessageProducer producer = session.createProducer(null); //设置producer的投递模式为持久模式 producer.setDeliveryMode(DeliveryMode.PERSISTENT);
二、设置客户端的clientID,相同的clientID会认为是一个客户端,后连接的会报错
// 创建connection connection = connectionFactory.createConnection(); connection.setClientID("bbb"); //持久订阅需要设置这个。 connection.start(); // 创建session Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE); // 创建destination Topic topic = session.createTopic("userSyncTopic"); //Topic名称 MessageConsumer consumer = session.createDurableSubscriber(topic,"bbb"); //持久订阅
相关文章推荐
- 20141204-关于使用C++标准输入输出库:iostream的一点思考
- 关于为什么要使用脚本引擎与脚本的一点思考
- 关于为什么要使用脚本引擎与脚本的一点思考
- 关于使用线程池造成tomcat进程无法正常退出的一点思考
- 关于动态内存的一点思考
- 关于fopen函数中路径名使用字符串的一点看法
- 关于在组件GIS开发中使用Python的一点补充说明
- 关于使用TestDriven.Net 2.0的一点补充
- 关于计算机体系结构的一点思考
- 关于Windows下ShellCode编写的一点思考
- 关于浮点一点想法和使用
- 关于web框架的一点思考
- 关于使用TestDriven.Net 2.0的一点补充
- 关于使用SQLDMO.Backup和SQLDMO.Restore的一点经验
- 关于Switch Case 的一点思考
- 关于三层结构的一点使用心得与开发建议
- 【分析】关于Windows下ShellCode编写的一点思考
- 使用ASP.NET中的一点体会--关于代码分离(转载)
- 关于计算机体系结构的一点思考。
- (转载)关于Windows下ShellCode编写的一点思考