当前位置: 首页 > 知识库问答 >
问题:

连接到ActiveMQ Artemis队列的单个使用者中的消息顺序问题

彭开畅
2023-03-14

当接收到单个队列使用者和多个生产者时,是否有可能出现消息顺序问题?producer12021-06-27 02:57:44.513发布消息M12021-06-27 02:57:44.514发布消息M2worker_consumer_queue。连接到被配置为单个使用者的队列的客户端代码应该按照M1M2的顺序接收消息,正确吗?有时信息的接收顺序是错误的。版本为ActiveMQ Artemis 2.17.0。尽管我提到了多个生产者,消息还是使用属性BlockonDurableSend=false从同一线程陆续发布。

我在每个消息发布时创建并关闭生产者。在相同的JVM上,我的假设是队列中发布消息的顺序,来自同一线程或来自不同线程,即使使用异步。时间戳是getJmstimestamp()。异步发布还维护任何内部队列有顺序吗?

共有1个答案

方砚
2023-03-14

对于不止一个生产者,不能保证消息将按顺序处理。

 类似资料:
  • 我刚刚开始使用RabbitMQ和AMQP。 我有一个消息队列 我有多个消费者,我想用相同的消息做不同的事情。 RabbitMQ的大部分文档似乎都集中在循环(round-robin)上,即单个消息由单个消费者使用,负载在每个消费者之间分散。这的确是我目击的行为。 例如:生产者只有一个队列,每2秒发送一次消息: 这里有一个消费者: 如果我启动消费者两次,我可以看到每个消费者都在以循环行为消费交替消息。

  • 问题内容: 我一般只是开始使用RabbitMQ和AMQP。 我有一条消息队列 我有多个消费者,我想用 同一条消息 做不同的事情。 RabbitMQ的大多数文档似乎都集中在循环上,即单个消息由单个使用者使用,而负载则分散在每个使用者之间。我确实是这种行为。 例如:生产者只有一个队列,每2秒发送一次消息: 这是一个消费者: 如果我启动使用者两次,则 可以看到每个使用者都以循环方式使用替代消息。 例如,

  • RabbitMQ的大部分文档似乎都集中在循环(round-robin)上,即单个消息由单个消费者使用。我有一个需求,其中希望从一个队列接收到多个订阅的消费者的相同消息。 下面是我的示例消费者代码。这里有两个侦听器在侦听同一个队列,但是只有一个使用者接收到消息。如何配置它,以便将相同的消息传递给两个消费者?(Consumer1和Consumer2)。任何帮助都将得到高度赞赏。

  • 我正在尝试使用Reactor Netty连接到docker容器上运行的消息队列。由于依赖性问题,我以独立的方式执行此操作,而不是使用SpringFlux。 从示例中的反应Netty留档,我看到有一种方法可以连接到服务器并获得响应: 但是当我之后尝试通过System.out.println()显示输出时,什么都不会发生。 我也试图了解如何使用: <代码>通量 但我不确定该怎么办。我在文档中看到了一个

  • 我有一个使用RabbitMQ构建的发布-订阅场景。有一个交换,其中消息由发布者发送,订阅该交换的任何使用者在其各自的队列中接收这些消息。这是一个扇出场景,其中有一个生产者,但有多个消费者。 现在我愿意在系统中集成一个死信队列,以便稍后处理被拒绝的消息。我的问题是 1)我应该为每个使用者配置一个单独的死信队列,还是应该有一个单独的死信队列来处理来自所有使用者的所有被拒绝的消息? 2)如果两者都有可能

  • 我使用Spring JMS和ActiveMQ,其中有一个客户机将消息推送到队列,有多个使用者线程监听并从队列中删除消息。有些时候,相同的消息会被两个使用者从队列中出列。我不希望这种行为,并希望确保仅有的一条消息由一个消费者线程处理。你知道我哪里出了问题吗? ActiveMQ 5.9.1配置: