我想知道消息传递系统中消息传递的可靠性,例如WebsphereMQ或ActiveMQ(通过JMS使用)。据我所知,如果收件人不可用并且将在稍后交付,则可以缓冲消息。
现在我想知道如果发件人暂时无法访问网络会发生什么。是否有某种本地缓冲,以后会发送消息?我假设这取决于消息代理运行的位置。所有机器上都有本地经纪人,还是只有中央经纪人?
要明确我的问题:如果我需要确保即使面临临时网络故障也能最终收到消息,消息系统是否是正确的选择?是否需要某种设置来实现这种可靠性?
任何有关相关文档的指示都将不胜感激。
答案 0 :(得分:2)
常见的解决方案称为“存储转发”。在这样的系统中,一旦你将消息传递给本地消息代理,它就成了他们的责任。此代理可能不是完整的代理。如果消息传递系统具有基本传递保证,则本地代理仍然需要持续缓冲消息,直到它们被传递给真正的代理。
答案 1 :(得分:0)
如果您确实无法承受丢失消息,我建议您尽可能在端点上实施可靠的消息传递模式,即如果在特定时间段内未收到确认并且接收方重复,则发送方重新发送检测以应对不止一次接收相同的消息。
保证交付带来性能开销,并且通常不保证您的消息可能需要多长时间才能到达。