ActiveMQ
文章平均质量分 87
帅天下
这个作者很懒,什么都没留下…
展开
-
SpringBoot集成ActiveMQ
在实际项目中,很多时候需要消息中间件来进行分布式系统间的通信。它具有低耦合、可靠投递、广播、流量控制、最终一致性等一系列功能。ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线。ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,尽管JMS规范出台已经是很久的事情了,但是JMS在当今的J2EE应用中间仍然扮演着特殊的地位。原创 2017-01-07 17:32:58 · 16368 阅读 · 3 评论 -
实现持久订阅消费者
在很多的业务场景下,如果有多个订阅者,其不在线则会丢失生产者发出的消息,仅有在线状态下方可接收到消息,那么是否有方式可以实现离校订阅消息的读取呢,并保证可靠传递以及不重复消费呢,本章将通过持久订阅者实现。本章概要1、定义持久订阅消费者;2、取消持久订阅消费者;定义持久订阅消费者1、首先关注一下几个信息,在没有定义持久订阅者时1.1、没有任何订阅者原创 2017-01-07 19:53:19 · 2261 阅读 · 0 评论 -
同时消费队列和发布订阅两类型消息
在《实现生产者P2P&subpub兼容模式》中实现了生产者两种消息类型的兼容模式,在消费者中对于单应用同样有这样的需求,我们需要能够在一个应用内同时消费队列和发布订阅两个类型的消息。本章概要1、回顾;2、编码;3、验证;回顾在springboot下,目前我们切换队列和发布订阅模式均通过spring.jms.pub-sub-domain属性配置。《实现原创 2017-01-07 19:46:06 · 4801 阅读 · 1 评论 -
消费者实现应用内分布式事务
在《生产者实现应用内分布式事务管理》中我们已经实现了消息生产与关系型数据库MySQL的应用内分布式事务,结合上一章《消费者JmsListener应用源码浅析》中对源码的分析,本章将实现消费者实现应用内分布式事务。本章概要1、基础工程目录;2、新增事务相关代码案例;3、事务验证;实践1、首先看下本工程的目录红色部分为在《优化生产者连接工原创 2017-01-07 19:37:25 · 1131 阅读 · 0 评论 -
消费者JmsListener应用源码浅析
在之前的章节中,特别是《消费者本地事务》我们并没有进行任何配置,为什么事务生效了呢(不考虑关系型数据库的结合,结合后MQ事务仍然生效,但关系型数据库事务没有作为整体事务管理),下面我们通过对源码的分析来探索Spring如何帮助我们实现了。本章概要1、JmsListener注解解析2、其他消费方式实现(3种)3、分布式事务的支持JmsListener注解解析原创 2017-01-07 19:30:09 · 21605 阅读 · 0 评论 -
消费者本地事务
之前在《实现应用内分布式事务管理(生产者)》章节已经重点介绍了生产者如何实现应用内的本地事务、分布式事务,对于消费者同样有事务管理的需求,本章节将重点介绍springboot下目前消费者本地事务。本章概要1、构建消费者基础工程;2、事务验证;3、尝试多种消息Response方式;4、切换监听来源--由队列至发布订阅;5、同步消息消费浅析;构建消费者基础工原创 2017-01-07 19:12:34 · 1526 阅读 · 0 评论 -
优化生产者连接工厂(带有session缓存)
之前的连接工厂中,JmsTemlate每次发送消息时都会重新创建connection、session、productor等对象,从而导致性能的下降,是否有类似pool的连接池协助我们提高性能呢?答案必然是肯定的。本章概要1、缓冲连接工厂对比选择;2、源码分析;3、CachingConnectionFactory连接工厂的实现;4、探索:ActiveMQXAConnect原创 2017-01-07 18:21:10 · 4301 阅读 · 0 评论 -
实现生产者P2P&subpub兼容模式
在《实现应用内分布式事务管理(生产者)》章节其实已经对JmsTemplate进行了重新注册,在源码JmsAutoConfiguration可以看到如下代码设置:jmsTemplate.setPubSubDomain(this.properties.isPubSubDomain());其主要设置我们的jmsTemplate是队列还是发布订阅类型消息,isPubSubDomain可以在appl原创 2017-01-07 18:16:42 · 1634 阅读 · 0 评论 -
ActiveMQ事务、异步发送、消息确认概念
消息事务 消息事务是在生产者producer到broker或broker到consumer过程中同一个session中发生的,保证几条消息在发送过程中的原子性。 在支持事务的session中,producer发送message时在message中带有transactionID。broker收到message后判断是否有transactionID,如果有就把message保存原创 2017-01-07 18:15:15 · 12508 阅读 · 1 评论 -
生产者实现应用内分布式事务管理
上一章主要是初步实现ActiveMQ与Springboot的集成,本章开始将重点专注在ActiveMQ的事务管理,作为生产者很多的业务场景需要对消息发送进行事务管理(即生产不一定发送),本章主要实践的案例将结合MySQL实现应用内分布式事务管理。本章概要1、纯MySQL事务管理1.1、添加依赖;1.2、添加待测试用户使用的实体User及其repository定义;(原创 2017-01-07 18:00:22 · 1225 阅读 · 0 评论 -
可靠事件实现微服务下最终一致性事务
通过《消费者实现应用内分布式事务》、《生产者实现应用内分布式事务管理》、《实现持久订阅消费者》三个章节的实践,其实我们已经可以通过消息队列实现多应用的分布式事务,应用内的事务保证了消息不会被重复生产消费、持久化订阅保证了消息一定会被消费(进入死信队列特殊处理),但其对于业务来说耦合性还是太强,在进行业务处理的同时消息处理名,其采用的仍然是应用内的事务处理,并不适合在大型高性能高并发系统实践,那么本原创 2017-04-01 09:35:14 · 5884 阅读 · 1 评论