rabbitmq中的异步ack

时间:2018-05-28 07:57:18

标签: spring-boot rabbitmq activemq spring-rabbitmq

首先让我告诉你我的设置。

  1. 持久且持久的队列和交换。
  2. 手册确认
  3. 在春季靴子中使用rabbitmq。
  4. SimpleMessageListenerContainer将并发使用者作为10,最大使用者为50。
  5. 问题场景是, 我发送消息m1然后m2。 m1需要时间来处理。 m2进程在m1之前完成。对于m1和amp; m2,交货标签与1.相同。因此消息m2在m1之前得到了回应,当m1被激活时,我得到未知的交货标签1异常。

    令人惊讶的是消息m1确认也被制作人收到了。但问题是在RMQ管理控制台中长时间处于未处理状态的m1手。

    这可能在RMQ中我可以在m1之前确定吗?我知道这两个消息都在同一个通道和相同的队列中。问题是我不能保证这两条消息都能被传递到不同的队列。

1 个答案:

答案 0 :(得分:1)

如果它们具有相同的交付标签,则它们在不同的线程/渠道上交付 - 交付标签的范围在渠道级别。看来你正试图在错误的频道上找到m1。

  

令人惊讶的是消息m1 ack也被制作人收到了。

我不知道你的意思 - 消费者不会去生产者;消费者和生产者是独立的。制片人与消费者的角色完全不同。

建议您不要在其他线程上发送ack;渠道为not thread safe