带有zookeeper的ActiveMQ复制levelDB

带有zookeeper的ActiveMQ复制levelDB,activemq,apache-zookeeper,leveldb,Activemq,Apache Zookeeper,Leveldb,我想了解zookeeper在ActiveMQ代理的复制leveldb中的角色 关于zookeeper选举:zookeeper如何知道在所有连接到zookeeper的客户端中,哪些客户端正在努力成为主客户端。连接到zookeeper的所有代理是否都传递了任何特定的密钥或配置,这些密钥或配置表示我们(假设3)ActiveMQ代理属于同一个环境,并努力成为主代理 从代理以什么间隔从主代理复制数据?任何可能丢失数据的角落案例 ActiveMQ是否提供使用复制的leveldb进行消息排序的保证?我所说的情

我想了解zookeeper在ActiveMQ代理的复制leveldb中的角色

  • 关于zookeeper选举:zookeeper如何知道在所有连接到zookeeper的客户端中,哪些客户端正在努力成为主客户端。连接到zookeeper的所有代理是否都传递了任何特定的密钥或配置,这些密钥或配置表示我们(假设3)ActiveMQ代理属于同一个环境,并努力成为主代理

  • 从代理以什么间隔从主代理复制数据?任何可能丢失数据的角落案例

  • ActiveMQ是否提供使用复制的leveldb进行消息排序的保证?我所说的情况是,当制作人按顺序向代理发送消息时,会再次选举主服务器吗

  • 谢谢,
    阿努伊

  • 按Zookeeper配置中的zkPath和代理名称
  • 在事务完成之前,每条消息都会同步到仲裁(节点/2+1)代理。所以没有同步间隔,它是实时同步的。群集将无法运行,除非您有一个仲裁代理在线,这样就不会有数据丢失
  • 消息以同步方式同步到大多数节点。在重新选举时,将选出具有最新更新的节点。有序消息应该没有问题。然而,在消息队列中严格依赖有序消息通常是有问题的。根据经验,只有在“快乐日”下才能完成邮件顺序。死信、多个消费者等等可能会扰乱消息顺序

  • 我有一个测试用例:假设我们有一个由3个代理组成的节点,其中B1是主代理,b2,b3是从代理。消息(m1)由b1复制,但不由b2复制,但m1(比方说m2)之后的下一条消息由b2首先复制,而不是由b1复制。在这种情况下:(b1有m1)和(b2有m2),如果此时主服务器关闭,b1成为主服务器thn,我们将丢失m2消息。ActiveMQ是如何处理此消息的?很好的解释。您能否解释一下,如果我们有多个消费者或死信队列,为什么订单会混乱?