持久性消息能够在代理发生故障的情况下保证消息的传送。代理会将消息存储在持久性存储库中,直到所有预期的使用方都确认已使用消息为止。
代理处理持久性消息比处理非持久性消息要慢,原因如下:
代理必须可靠地存储持久性消息,以使其即使在代理出现故障时也不会丢失。
代理必须确认它所收到的每一条持久性消息。如果生成消息的方法正常返回,则说明向代理的传送成功。
根据客户端确认模式的不同,代理可能需要确认使用方客户端对持久性消息的确认。
对于队列和具有长期订户的主题而言,代理处理非持久性消息的性能要高大约 40%。 这些结果是在使用 10k 大小的消息和 AUTO_ACKNOWLEDGE 模式的情况下得到的。