ActiveMQ
本专栏主要讲解ActiveMQ的基本使用,包括点对点发送消费消息,发布订阅消息,消息持久化,事务消息等
孟诸
coding
展开
-
ActiveMQ学习十六-日志信息
1 日志配置在conf/log4j.properties配置文件中可以配置日志信息,如滚动日志大小等2 日志查看搜索消息关键字如msgId可以查看那日志发送和消费信息,如生产者信息,消费者信息等原创 2020-07-23 22:58:35 · 3121 阅读 · 0 评论 -
ActiveMQ学习十五- ActiveMQ优化
1、非持久化消息比持久化消息快非持久化消息是异步的,Procedure不需要等待Consumer的receipt(应答)消息持久化消息要把消息先存储起来,再传递2、使用异步投递消息cf.setUserAsyncSend(true);3、事务消息比非事务消息更快4、可以考虑应用内嵌brocker,这样通讯协议可以使用VM通讯协议5、尽量使用文件的方式存储消息,如kahadb6、合理设置prefetchSize7、考虑生产者流量控制,可以通过xml配置,代码方式如下cf.setProcedu原创 2020-07-23 22:02:50 · 240 阅读 · 0 评论 -
ActiveMQ学习十四-内存设置、流控
目录1 内存设置2 流量控制2.1 生产者流量控制2.1.1 同步发送流控设置2.1.2 异步发送流控设置2.2 消费者流量控制1 内存设置windows 环境下 Bin/activemq.bat 文件linux环境中 修改env文件:ACTIVEMQ_OPTS_MEMORY="-Xms1G -Xmx1G"在broker配置中的系统内存和磁盘空间使用量<systemUsage> <systemUsage> &...原创 2020-07-23 21:34:02 · 1367 阅读 · 0 评论 -
ActiveMQ学习十三-定时投递
有些业务场景中我们希望发送完消息后过一段时间再消费,这时候可以用到ActiveMQ延时投递的功能1 第一步需要修改activemq.xml配置文件,开启延时发送<broker xmlns="http://activemq.apache.org/schema/core" ... schedulerSupport="true" > ...</broker>2 第二步消息生产者在发送消息的时候需进行设置TextMessage message = sessio...原创 2020-07-22 22:05:46 · 554 阅读 · 0 评论 -
ActiveMQ学习十二-顺序消费和消息分组
1 消息分组1.1 概述从Apache官方文档的话说,是Exclusive Consumer功能的增强。逻辑上,可以看成是一种并发的Exclusive Consumer。JMS消息属性JMXGroupID被用来区分Message Group。Message Groups特性保证所有具有相同JMSGroupID的消息会被分发到相同的Consumer(只要这个Consumer保持Active)。另一方面,Message Groups也是一种负载均衡的机制。在一个消息被分发到Consumer前,Brok原创 2020-07-21 23:30:25 · 890 阅读 · 0 评论 -
ActiveMQ学习十一-异步发送
ActiveMQ官方说异步发送是很多模式下默认的传输方式,但是在发送非事物持久化消息的时候默认使用的是同步发送模式。同步发送时,Producer.send() 方法会被阻塞,直到 broker 发送一个确认消息给生产者,这个确认消息暗示生产者 broker 已经成功地将它发送的消息路由到目标目的并把消息保存到二级存储中。同步发送持久消息能够提供更好的可靠性,但这潜在地影响了程序的相应速度,因为在接受到 broker 的确认消息之前应用程序或线程会被阻塞。如果应用程序能够容忍一些消息的丢失,那么可以使用异步原创 2020-07-21 23:19:05 · 276 阅读 · 0 评论 -
ActiveMQ学习十-组合队列
目录1 客户端实现方式1.1 实现概述1.2 代码实现1.2.1 容器中注入compositeDestinationContext1.2.2 CompositeProcedure1.2.3 CompositeQueueConsumer1.2.4 CompositeTopicConsumer1.2.5 测试代码2 xml配置组合队列支持通过一个队列发送给多个队列或主题1 客户端实现方式1.1 实现概述在composite destinations中,多个de原创 2020-07-20 22:11:38 · 488 阅读 · 0 评论 -
ActiveMQ学习九-虚拟主题和镜像队列
1 虚拟主题对于队列,只能是集群消费。对于主题,只能是广播消费。如果一个topic有的服务集群消费,一部分服务广播消费,就需要用到虚拟主题。实际就是创建topic procedure,queue consumer。1.1 普通的主题和队列存在的问题1.同一应用内consumer端负载均衡的问题:同一个应用上的一个持久订阅不能使用多个consumer来共同承担消息处理功能。因为每个都会获取所有消息。queue模式可以解决这个问题,broker端又不能将消息发送到多个应用端。所以,既要发布订阅,又要原创 2020-07-20 21:20:14 · 405 阅读 · 0 评论 -
ActiveMQ学习八-高可用部署
1 前期准备高可用部署的前提是做好了上篇文章的静态网络连接的配置broker1和broker2都添加了如下配置1)broker标签中配置networkConnectors,开启双工通信<networkConnectors> <networkConnector name="bridge" duplex="true" uri="static://(nio://localhost:61618,nio://192.168.249.201:61618)"/>&l...原创 2020-07-19 12:45:12 · 755 阅读 · 0 评论 -
ActiveMQ学习七-静态网络连接
目录1 静态协议配置1.1 broker1发消息,broker2收消息1.2 broker2发消息,beroker1收消息1.3 networkConnector其他属性2 消息回流功能2.1 丢失的消息2.2消息回流配置2.3 代码测试1 静态协议配置基本示意图两个Brokers是通过一个static的协议来网络链接的。一个Consumer链接到brokerB的一个地址上 ,当Producer在brokerA上以相同的地址发送消息时,此时它将被转移到b..原创 2020-07-18 00:12:09 · 400 阅读 · 0 评论 -
ActiveMQ学习六-消息存储持久化
目录1 消息存储机制2 消息存储方式2.1 KahaDB消息存储2.2 AMQ Message Store2.3 JDBC持久化消息2.4 memory message store1 消息存储机制ActiveMQ不仅支持persistent【持久的】和non-persistent【非持久的】两种方式,还支持消息的recovery【恢复】方式。Queue的存储是很简单的,就是一个FIFO的Queue。对于持久化订阅主题,每一个消费者将获得一个消息的复制。Active.原创 2020-07-17 21:43:31 · 402 阅读 · 0 评论 -
ActiveMQ学习五-ActiveMQ支持的传输协议
1 传输协议介绍Connector:ActiveMQ提供的,用来实现连接通讯的功能。包括:client-to-broker、broker-to-broker。 ActiveMQ允许客户端使用多种协议来连接配置Transport Connector的文件在activeMQ安装目录的conf/activemq.xml中的<transportConnectors>标签之内。<transportConnectors> <!-- DOS protection, limit..原创 2020-07-17 21:18:57 · 302 阅读 · 0 评论 -
ActiveMQ学习四-事务消息和ACK应答
1 ACK机制ActiveMQ消息签收方式在创建Session的时候指定Session session = connection.createSession(transaction, acknowledgeMode);Session.AUTO_ACKNOWLEDGE:当客户成功的从receive方法返回的时候,或者从MessageListener.onMessage方法成功返回的时候,Session自动确认客户收到的消息。Session.CLIENT_ACKNOWLEDGE:客户通过调用消息的ac原创 2020-07-17 21:15:22 · 538 阅读 · 0 评论 -
ActiveMQ学习三-持久化订阅
目录1 持久化订阅概述2 代码测试2.1 容器中注入一个持久化消费者ActiveMqContext2.2 TopicProcedure中添加持久发送的方法2.3 TopicConsumer添加持久化消费方法2.4 TopicListener添加持久化监听方法2.5 测试代码2.5.1 发送消息2.5.2 消费消息2.5.3 监听消息3 持久订阅小结1 持久化订阅概述在上篇文章中我们看到通过发布订阅模式的时候要先启动消费者,再启动生产者才能消费消息,这.原创 2020-07-17 09:30:22 · 606 阅读 · 0 评论 -
ActiveMQ学习二-点对点消息和发布订阅消息
目录1 消息传递域介绍2 统一处理方法3 点对点消息测试3.1 获取点对点ActiveMqContext3.2 spring中注入一个点对点发送的context3.3 消息生产者3.4 消息消费者3.5 消息监听者3.6 测试代码3.6.1 发送消息3.6.2 消费者消费消息3.6.3 监听者监听消息3.6.4 同时消费和监听消息4 发布订阅消息测试4.1 获取发布/订阅ActiveMqContext4.2 spring中注入一个发布/订阅A的原创 2020-07-15 22:54:40 · 359 阅读 · 0 评论 -
ActiveMQ学习一-消息队列介绍
1 消息队列功能介绍消息队列是分布式系统中重要的组件,主要解决分布式环境下各个服务同步调用、负载不均、应用耦合等问题。消息队列的作用就是可以让各个服务可以异步处理、流量削峰、应用解耦1.1 异步处理以电商用户下单为例,用户创建订单后发送订单创建成功的短信。传统方式可以做成串行处理,先调用订单服务创建订单,订单创建成功后调用短信服务发送短信。假设创建订单100ms,发送短信100ms,那么整个过程需要200ms改进的方案是把调用短信服务发短信这个过程改为发送一条订单创建成功的消息,短信服务收原创 2020-07-15 22:40:20 · 246 阅读 · 0 评论