![](https://img-blog.csdnimg.cn/2019091813595558.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
activemq
activemq
你怎么不笑了
这个人很笨,什么都不会写
展开
-
activemq--死信队列
死信队列死信队列:Dead Letter Queue一条消息被重复发送多次之后(默认重发6次,redeliveryCounter=6),将会被移入到死信队列。开发人员可以通过这个queue查看出错的消息,进行人工干预。一般生产环境中使用mq的时候设计两个队列:1.核心业务队列 :处理正常的业务逻辑2.死信队列:处理异常信息配置SharedDeadLetterStrategy:共享死信队列策略将所有的DeadLetter保存在一个共享的队列中,这是activemq的默认策略。共享队列.原创 2021-08-26 08:51:11 · 1993 阅读 · 0 评论 -
activemq--消息重试机制
消息重试机制官网地址什么情况下会引起消息重发消费者端用了transactions且在session中调用了rollback消费者端用了transactions且在调用commit之前关闭或者未commit消费者端在SESSION_ACKNOWLEDGE的传递模式下,在session中调用了recover消息重发时间间隔和重发次数时间间隔:1重发次数:6有毒消息Poison ACK一个消息被redelivedred超过默认最大的重复次数(默认6次)时,消费端会给MQ.原创 2021-08-26 08:50:35 · 1893 阅读 · 0 评论 -
activemq--延迟投递和定时投递
延迟和定时消息投递在activemq.xml文件里激活schedulerSupport的属性:Property nametypedescriptionAMQ_SCHEDULED_DELAYlong延迟消息投递时间AMQ_SCHEDULED_PERIODlong重复投递的时间间隔AMQ_SCHEDULED_REPEATint重复投递次数AMQ_SCHEDULED_CRONString使用cron表达式配置schedulerSupport=t.原创 2021-08-26 08:49:15 · 507 阅读 · 0 评论 -
activemq--异步投递
异步投递activemq支持同步和异步两种发送的模式将消息发送到broker,模式的选择对发送延时有巨大的影响。producer能达到怎样的产出率(产出率=发送数据总量/时间),主要受发送延时的影响,使用异步发送能够显著的提高发送的性能。activemq默认使用异步发送的模式:除非明确指定使用同步发送的方式或者在未使用事务的前提下发送持久化消息,这两种情况是同步发送到。如果没有使用事务且发送的是持久化的消息,每一次发送都是同步发送的且会阻塞producer直到broker返回一个确认,表示消息已.原创 2021-08-26 08:48:21 · 465 阅读 · 0 评论 -
activemq--可持久化机制之JDBC的journal
对于activemq长期的持久性,在使用JDBC时建议也使用高性能的journalActivemq Journal,使用了高速缓存写入技术,大大提高了性能,由于JDBC每次将消息去写库和读库会耗费时间,消息数据量多的话,就会造成频繁的写库。journal是会把生产这者生产的消息存到journal文件中,在消费者消费很快的情况下,journal文件中的消息未同步到DB之前,消费者已经消费了90%的消息,这时,只需要同步剩下的10%的消息到DB。如果消费者消费速度很慢,journal文件可以以批量的方式.原创 2021-08-18 22:50:38 · 443 阅读 · 0 评论 -
activemq--可持久化机制之JDBC代码
编码测试一定要开启持久化!!!messageProducer.setDeliverMode(DeliveryMode.PERSISTENT);队列生产者public class JmsProduceJDBC { public static final String ACTIVEMQ_URL = "tcp://localhost:61616"; public static final String USERNAME = "admin"; public static f.原创 2021-08-18 22:49:50 · 103 阅读 · 0 评论 -
activemq--可持久化机制之JDBC
JDBC存储机制通过数据库的方式,存储消息.mysql实现1.添加jar包到activemq安装目录的lib路径下,需要mysql和对应的数据库连接池驱jar包 mysql驱动包 common-dbcp common-poll2.修改activemq.xml将默认的KahaDB持久化机制改为JDBC <persistenceAdapter> <jdbcPersistenceAdapter dataDirectory="activemq-data" .原创 2021-08-18 22:48:42 · 396 阅读 · 0 评论 -
activemq--持久化机制之LevelDB
LevelDB(了解)LevelDB是在activemq 5.8版本之后引入的,和KahaDB类似,也是基于文件的本地数据库存储形式,但比KahaDB更快的持久性。没有使用定制的B-Tree实现索引来写日志,而是使用基于LevelDB的索引,由于“append only”文件访问模式,具有更好的属性:快速更新(不需要进行随机磁盘更新)并发读取使用硬链接的快速索引快照注意:WarningThe LevelDB store has been deprecated and is no lo.原创 2021-08-18 22:48:05 · 667 阅读 · 0 评论 -
activemq--可持久化机制之KahaDB
KahaDBKahaDB是一个基于文件的持久性数据库,从5.4版本开始默认使用,类似于redis的AOF具有更好的快速持久性配置查看 activemq.xml在activemq安装路径下,activemq/data/hahadb,可以看到db文件KahaDB存储原理KahaDB目前是默认的存储方式,可用于任何场景,提高了性能和恢复能力.消息存储使用一个事务日志和一个索引来存储他所有的地址.KahaDB数据保存目录有4类文件加1个lock文件。db-1.log,db.dat.原创 2021-08-18 22:47:18 · 1256 阅读 · 0 评论 -
activemq--可持久化机制之AMQ
AMQ (了解)AMQ是一种文件存储 的形式,它具有写入速度快和易恢复的特点。消息存储在一个文件中,文件默认大小为32M,当一个文件里面的消息都被消费后,这个文件就会被标志为可删除,在下一个清除阶段,这个文件删除。AMQ适用于activemq 5.3之前的版本<broker brokerName="broker" persistent="true" useShutdownHook="false"> <persistenceAdapter> <amq.原创 2021-08-18 22:46:35 · 2107 阅读 · 0 评论 -
activemq--可持久化机制
可持久化机制不同于DeliveryMode.PERSISTENT之前的持久,事务,签收是mq自带的机制可以这么理解,之前的三种机制为了保证消息在发送过程中的可靠性,而可持久化机制是更可靠的保证数据。物理备份消息数据。MQ服务器不应该和数据备份服务器为同一个服务器。在发送者将消息发送之后,消息中心会将消息存储到本地数据问题、内存数据库或者远程数据库中,之后尝试把消息再次发送给接收者,成功则删除存储的消息,失败则继续尝试发送。activemq支持的消息持久化机制:JDBC,AMQ,KahaDB,L.原创 2021-08-18 22:46:03 · 80 阅读 · 0 评论 -
activemq--传输协议之NIO
如果不特别指定activemq的网络监听端口,那么这些端口将默认使用BIO。为了提高单节点的网络吞吐性能,需要明确指定activemq的网络IO模型。如:配置URI格式头以nio开头,表示这个端口使用以tcp为基础的NIO网络IO模型。修改activemq.xml在transportConnectors节点加上nio配置<transportConnector name="nio" uri="nio://0.0.0.0:61618?trace=true"/>保存activemq.原创 2021-08-18 22:45:28 · 181 阅读 · 0 评论 -
activemq--传输协议
activemq的传输协议activemq支持的传输协议有:TCP,NIO,UDP,SSL,HTTP(S),VM在activemq.xml文件可以看到具体配置信息。activemq的默认消息协议是openwire.1.tcp协议1.默认的broker配置,tcp的client监听端口是61616.2.在网络传输数据前,必须序列化数据,消息是通过一个叫wire protocol来序列化成字节流.默认情况下,activemq把wire protocol叫做openwire,他的目的是促使网络.原创 2021-08-18 22:44:55 · 810 阅读 · 0 评论 -
activemq--sprinboot整合activemq
springboot整合activemq1.配置文件2.代码2.1 队列-queue2.2 主题-topic1.配置文件pom.xml<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-activemq</artifactId></dependency>application.y原创 2021-08-15 15:32:53 · 96 阅读 · 0 评论 -
activemq--spring整合activemq
spring整合activemq1.spring整合activemq-队列2.spring整合activemq-主题3.监听的方式实现1.spring整合activemq-队列spring整合activemq-队列applicationContext.xml<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:x原创 2021-08-14 23:17:00 · 241 阅读 · 0 评论 -
activemq--Broker
什么是BrokerBroker是实现ActiveMQ功能的一个实例。以代码的形式去创建启动一个Broker,就可以当做一个微型的mq服务器传递消息。通过conf启动不同的activemq实例# 复制一份activemq.xmlcp activemq.xml activemq02.xml# 通过activemq02.xml启动mq./activemq start xbean:file:/home/activemq/conf/activemq02.xml//多个实例同理实现br.原创 2021-08-14 23:10:17 · 201 阅读 · 0 评论 -
activemq--点对点与订阅发布总结
点对点点对点模型是基于队列的。生产者发送消息到队列,消费者从队列获取消息。队列的存在使得消息的异步传输成为可能1.在session关闭后,如果还有消息没有被签收(acknowledge),消费者在下次连接到相同的消息队列时还会接收到未签收的消息。2.队列可以长久的保存消息直至被消费者消费。不用时刻处于激活连接状态。充分体现了异步传输模式的优势发布订阅JMS pub/sub模型定义了向一个内容节点发布和订阅消息,这些节点被称作topic1.主题可以认为是消息的传输媒介,发布者发布消息到主.原创 2021-08-11 22:05:55 · 189 阅读 · 0 评论 -
activemq--签收
非事务签收自动签收(默认)//两个参数,第一个事务,第二个签收//Session.AUTO_ACKNOWLEDGESession session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);手动签收//两个参数,第一个事务,第二个签收//Session.CLIENT_ACKNOWLEDGESession session = connection.createSession(false, Session.CLIE.原创 2021-08-11 20:34:38 · 161 阅读 · 0 评论 -
activemq--事务
生产者事务//两个参数,第一个事务,第二个签收Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);false只要执行send,就进入到队列中。关闭事务,第2个签收参数的设置需要有效。true先执行send再执行commit,消息才会被真正的提交到队列中。手动commit可以方便事务进行回滚try { // ... 业务完成后commit session.commit().原创 2021-08-11 20:33:52 · 493 阅读 · 0 评论 -
activemq--消息持久化与非持久化
消息的可靠性分为持久化和非持久化通过setDeliveryMode设置messageProducer.setDeliveryMode(DeliveryMode.NON_PERSISTENT); //非持久化:当服务器宕机,重启后消息会丢失messageProducer.setDeliverMode(DeliveryMode.PERSISTENT); //持久化:当服务器宕机,重启后消息依然存在持久queue配置setDeliveryMode持久topic消费者/** .原创 2021-08-11 20:32:58 · 642 阅读 · 0 评论 -
activemq--Message消息属性
Message消息之消息属性以属性名和属性值为键值对关系的形式指定的。可以将属性视为消息头的扩展,属性指定一些消息头没有包括的扩展信息。消息的属性就是给一条消息附加一条消息头,可以添加一些不透明的数据在属性里。// 为某条数据设置属性,可以区分数据TextMessage textMessage = session.createTextMessage();textMessage.setStringProperty("user_01", "vip");// 获取消息属性textMessage.原创 2021-07-29 21:59:38 · 439 阅读 · 0 评论 -
activemq--Message消息体
Message消息之消息体JMS消息体:用来封装具体的消息数据。消息体类型有五种,常用的是TextMessage和MapMessage发送方和接收方的消息体类型必须一致。消息类型说明TextMessage普通字符串,包含一个StringMapMessageMap类型,Key为String字符串,值为java的基本类型ByteMessage二进制数组消息,包含一个byte[]StreamMessagejava数据量消息,用标准流操作来顺序的填充和读取.原创 2021-07-29 21:59:08 · 336 阅读 · 0 评论 -
activemq--Message消息头
Message消息之消息头JMSDestination消息发送的目的地,分为queue和topic。可以针对某个特殊的消息进行设置。// 设置目的地textMessage.setJMSDestination(topic);JMSDeliveryMode持久化模式对于一条持久化消息:应该被传送“一次仅仅一次”,这就意味着如果JMS提供者出现故障,该消息不会丢失,它会在服务器恢复之后再次传递对于一条非持久化的消息:最多会传送一次,意味着服务器出现故障,该消息会丢失。// 设置持久化 /.原创 2021-07-29 21:58:29 · 281 阅读 · 0 评论 -
activemq--queue和topic
两种消费方式1.同步阻塞方式(receive)通过MessageConsumer的receive方法接收消息,receive接收到消息前或者超时前将会一直阻塞receive() 一直阻塞receive(long time) 超时2.异步非阻塞方式(监听器)通过MessageConsumer的setMessageListener注册一个消息监听器,消息到达之后会自动调用监听器MessageListener的onMessage方法队列如何消费消息1.先生产消息,只启动一个消费者。消费.原创 2021-07-29 21:56:30 · 333 阅读 · 0 评论 -
activemq无法远程访问
防火墙和端口,以及安全组都正常开放的情况下,还是无法通过ip:8161访问到activemq的控制台的话,打开配置文件jetty.xml,如图所示,注释掉原创 2021-07-26 15:59:48 · 503 阅读 · 0 评论