ActiveMQ - session/transaction 复制的可能性
ActiveMQ - possibility of session/transaction replication
我正在使用具有 Master/Slave 配置和 SQL 数据库的 ActiveMQ 5.12.1 - 我们没有太多负载,但我们有很长的 运行 队列消费者 - 在几秒到几秒之间小时。
JMS 消息是持久的,会话是事务性的。
我的侦听器正在处理事务中队列中的消息,此过程需要几分钟。在此期间发生故障转移时,处理将完成,但 JMS 事务将由于故障转移而回滚。
是否有可能以某种方式配置 ActiveMQ,故障转移也将包括 运行 事务 - 以便它们可以在重新连接到新的 Master 后成功完成?
这不是经纪人或客户所允许的。由于无法确切知道在客户端或代理端进行故障转移时正在运行的内容,唯一安全的做法是将 TX 标记为失败并将其回滚,否则客户端可能会认为确认了它sent 发送了,但实际上没有发送,或者代理可以假设客户端收到了它发送的消息,而实际上这也没有发生。
您的客户需要考虑到 TX 操作有时会回滚的事实。
我正在使用具有 Master/Slave 配置和 SQL 数据库的 ActiveMQ 5.12.1 - 我们没有太多负载,但我们有很长的 运行 队列消费者 - 在几秒到几秒之间小时。
JMS 消息是持久的,会话是事务性的。
我的侦听器正在处理事务中队列中的消息,此过程需要几分钟。在此期间发生故障转移时,处理将完成,但 JMS 事务将由于故障转移而回滚。
是否有可能以某种方式配置 ActiveMQ,故障转移也将包括 运行 事务 - 以便它们可以在重新连接到新的 Master 后成功完成?
这不是经纪人或客户所允许的。由于无法确切知道在客户端或代理端进行故障转移时正在运行的内容,唯一安全的做法是将 TX 标记为失败并将其回滚,否则客户端可能会认为确认了它sent 发送了,但实际上没有发送,或者代理可以假设客户端收到了它发送的消息,而实际上这也没有发生。
您的客户需要考虑到 TX 操作有时会回滚的事实。