标签: activemq

获取ActiveMQ.DLQ的死信消息

使用ActiveMQ的持久消息后,大量死信消息会堆积在ActiveMQ.DLQ队列,如果数量增大,会对MQ的内存和磁盘造成一些影响。
DLQ队列中的消息来源,这里没有完全去测试,目前来看有客户端消费出现异常或者被事务回滚的消息。
DLQ队列可以通过MQ配置来禁用,这样就不会堆积到DLQ队列,但对于这部分信息的状态就无法获取,好一点的方式是DLQ队列保留,增加对DLQ队列的处理措施,例如获取队列内的数据,找出原因,并做补救,如果通过MQ传递可靠消息,这个保留处理的步骤应该是必须的,另一方面是从消费端的应用上解决出现死信消息的原因。
DLQ是一个队列,通过普通的队列消费方式就可以拿到其中的消息,消息本身是一个ActiveMQObjectMessage.
阅读全文——共4002字

通过桥接增加消息服务器的负载和可靠性

 
·使用MQ桥接,隔离消息的生产和消费服务,增加吞吐量和稳定性.
·在消息生产服务应用主从,解决单点故障,提高可用行,也避免对依赖消息服务器的应用产生影响
·消息服务器使用了基于磁盘的消息交换,减少了对内存的压力,但IO会出现瓶颈,这里物理机器使用了企业级的SSD,解决此问题。
阅读全文——共510字

ActiveMQ禁用死信队列

在使用持久化的ActiveMQ中,过期之后消息会被转发到ActiveMQ.DLQ队列中。
目前发现在线上的大量商品信息同步时,由于消费端的机制导致了过期消息的产生,转发到DLQ队列后对消息服务器的空闲资源造成影响。
由于消息的发送和消费都对应有应用日志,DLQ在存放消息的意义不大,所以禁用DLQ队列。
<destinationPolicy>
阅读全文——共715字

基于文件锁的ActiveMQ集群

目前的MQ服务使用了基于共享文件锁的集群方式,使用了主从两台机器进行主备的相互切换.
MQ的消息均使用了持久化配置,用于保证消息的可靠性.
最初使用了自身默认的KahaDB作为存储引擎,后来发现此种方式下日志文件过多,容易造成IO问题和达到操作系统的文件打开限制.
虽然可以加大限制的阀值,但终归不能很好的解决此问题.
阅读全文——共1738字