在分布式activemq群集中,如果某个节点发生故障,其消息将丢失,直至其返回。即使节点出现故障,有没有办法继续分发这些消息?
答案 0 :(得分:0)
你想要master-slave
哈吗?
http://activemq.apache.org/masterslave.html
运行大量独立经纪人或经纪人的问题 网络是消息由任何一个物理经纪人拥有 时间点。如果那个经纪人失败了,你必须等待它 在消息可以传递之前重新启动。 (如果你正在使用 非持久性消息传递和经纪人失败你通常会失败 你的留言)。
MasterSlave背后的想法是将消息复制到从属设备 经纪人即使你有灾难性的硬件故障了 主人的机器,文件系统或数据中心,你立即得到 故障转移到从站,没有消息丢失。
更多信息:http://activemq.apache.org/replicated-message-store.html
答案 1 :(得分:0)
创建一个代理网络,每个代理都有一个从属服务器(例如直接复制)。 这样,如果主设备发生故障,从设备可以加入代理网络并占据其前主设备的位置。根据您选择的复制方案,前主代理甚至可以恢复并重新加入新主服务器作为从属节点。
中的network of brokers据我所知,不可能“强制”activemq在多个代理上冗余地存储待处理的消息。
答案 2 :(得分:0)
是的,您使用共享邮件存储执行此操作并让多个代理使用该存储。这些经纪人中只有一个在任何时候都是活跃的 - 首先连接到商店的经纪人。这是通过锁管理的。当活动代理摔倒时,第二个代理将获取锁定,然后它将变为活动状态,处理存储中未由第一个代理发送的任何消息。客户端(生产者和消费者)通过连接字符串
连接到代理对failover:(tcp://broker1Host:broker1Port,tcp://broker2Host:broker2port)
只有持有锁的代理才会接受连接,因此故障转移字符串指定客户端应尝试连接到列表中的下一个代理。使用这种机制,如果主站发生故障,甚至可能有多个从站等待接管。
如果您可以访问支持锁定的网络文件系统(例如SAN或NFS),可以在http://activemq.apache.org/shared-file-system-master-slave.html找到有关此内容的更多信息,如果没有,则可以使用数据库作为邮件存储http://activemq.apache.org/jdbc-master-slave.html