activemq解决消费不均匀_如何解决MQ消息消费顺序问题

文章探讨了如何在ActiveMQ和RocketMQ中解决消息消费的顺序问题。在ActiveMQ中,通过设置exclusive consumer或message groups特性来保证消息顺序。而在RocketMQ中,通过确保顺序消息发送到同一broker server下的同一队列实现顺序消费。同时,文章提到了消息重复和幂等问题,并指出在分布式系统中,保持消息顺序通常需要确保消息由单一消费者顺序处理。
摘要由CSDN通过智能技术生成

通常mq可以保证先到队列的消息按照顺序分发给消费者消费来保证顺序,但是一个队列有多个消费者消费的时候,那将失去这个保证,因为这些消息被多个线程并发的消费。但是有的时候消息按照顺序处理是很重要的,那我们该如何来保证消息的顺序呢,下面将从activemq和rocketmq来看看,它们是如何来保证消息的顺序问题的?我们还可以有别的处理方案么?

Activemq处理方案

1、利用Activemq的高级特性:consumer之独有消费者(exclusive consumer)

在ActiveMQ4.x中可以采用Exclusive Consumer,broker会从queue中,一次发送消息给一个消费者,这样就避免了多个消费者并发消费的问题,从而保证顺序,配置如下:

queue = new ActiveMQQueue("TEST.QUEUE?consumer.exclusive=true");

consumer = session.createConsumer(queue);

当在接收信息的时候有一个或者多个备份接收消息者和一个独占消息者的同时接收时候,无论两者创建先后,在接收的时候,均为独占消息者接收。

当在接收信息的时候,有多个独占消费者的时候,只有一个独占消费者可以接收到消息。

当有多个备份消息者和多个独占消费者的时候,当所有的独占消费者均close的时候,只有一个备份消费者接到到消息。

当主消费者挂了话,会立刻启用故障切换转移到下一台消费者继续消费

图1

独占消

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值