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

Apache ActiveMQ Artemis集群中的消息顺序

蓬英逸
2023-03-14

我试图在Apache Artemis集群中实现消息排序。连接到集群的生产者/消费者实现了高可用性。因此,在某个时间点,将有两个相同应用程序的实例连接到主题或队列。到目前为止,我可以发现以下两种方法可用于在Red Hat AMQ/Artemis集群中实现排序:

  1. 消息组(根据文档,只有当集群中每个节点有一个使用者时才是可靠的)
  2. 独占队列(仅在单个节点上保留消息顺序)。

我完全理解使用集群和期望消息排序是相互冲突的需求,但它仍然是在我所从事的项目中实现的需求,因为消费者无法处理处理无序消息的复杂性。

在Artemis ActiveMQ/Red Hat AMQ集群中,可以使用哪些替代方案来实现消息排序?

共有1个答案

林德华
2023-03-14

在集群环境中,一个独占使用者绑定到每个代理上的每个队列,因此根据消息负载平衡配置,每个代理可以有一个使用者接收消息。这打破了秩序。您的生产者和消费者需要在同一个代理实例上,以保留订购。

正如您所说,群集消息组功能并不可靠,但它在一些非常特定的用例中可能很有用。还要注意,对于HA来说,拥有代理集群是不够的。您需要显式配置HA(共享存储或复制),否则,如果代理永久失败,那么它的所有消息都将丢失。

 类似资料:
  • 遇到不想建群却又想群发消息的情况时,可使用“群发消息”功能。 1.手机版 使用方法:在消息界面右上角“+”号,选择“群发消息”,编辑好内容后,选择企业内部的同事进行发送。 2.电脑版 使用方法:右上角“+”号,选择“群发消息”,编辑好内容后,选择企业内部的同事进行发送。

  • 微信的群发消息接口有各种乱七八糟的注意事项及限制,具体请阅读微信官方文档。 发送消息 以下所有方法均有第二个参数 $to 用于指定接收对象: 当 $to 为整型时为标签 id 当 $to 为数组时为用户的 openid 列表(至少两个用户的 openid) 当 $to 为 null 时表示全部用户 $app->broadcasting->sendMessage(Message $message,

  • 主要内容:1 start启动服务定时锁定消息队列,1.2 lockAll锁定所有消息队列,2 submitConsumeRequest提交消费请求,3 ConsumeRequest执行消费任务,3.1 tryLockLaterAndReconsume尝试延迟加锁并重新消费,3.2 takeMessages拉取消息,4 processConsumeResult处理消费结果,4.1 commit提交消息,4.2 checkReconsumeTimes检查重试次数,,,基于RocketMQ relea

  • < li >我在Kubernetes集群中部署并运行了Kafka。我使用的图片来自docker hub-https://hub . docker . com/r/cloudtrackinc/kubernetes-Kafka/ < li >我的kubernetes群集中有3个kube节点。我有3个Kafka和3个zookeeper应用程序在运行,我有服务zoo1、zoo2、zoo3和kafka-1、

  • 我正在使用Docker启动一个kafka代理集群(例如,5个代理,每个容器一个代理)。Kafka版本2.12-0.11.0.0,动物园管理员3.4.10。 场景: null > 在独立模式下启动Zookeeper,然后启动kafka 创建主题 null 检查邮件 消息被累犯 null null server.properties(broker.id唯一,broker_ip:broker_port对

  • 目前EMQ在生态云提供服务的区域和Endpoint如下: AWS-北京 http://awsbj0.emq.api.xiaomi.com 或 https://awsbj0.emq.api.xiaomi.com AWS-Oregon http://awsusor0.emq.api.xiaomi.com 或 https://awsusor0.emq.api.xiaomi.com 金山云-北京6