消息队列中非持久化消息的用例
Use-case of non-persistence messages in message queue
我正在阅读消息队列,发现消息可以有两种类型:持久性和非持久性。
持久性消息存储在 disk/database 中,以便它们在代理重启后仍然存在,而非持久性消息存储在内存中,在代理重启后不存在。
持久消息传递通常比非持久传递慢。
但我想不出非持久消息的具体用例。
任何人都可以举例说明程序员何时应该使用非持久消息。
一般来说,当您丢失一些消息并没有多大关系时。
例如,铁路信号......信号每隔几秒发送一次它们的状态。如果一两个人迷路了,就会有更多人来。
或者股票价格显示...如果显示有一点无法更新,那也没什么大不了的。此处不讨论交易 activity - 只是显示在 public 区域或其他地方。
除了可能不需要持久性的特定 "business" 应用程序之外,非持久性消息可能优于持久性消息的另一个重要原因是 - 性能。发送和使用非持久消息几乎总是比使用持久消息的相同操作快得多。在处理持久消息时,代理必须与存储设备(例如本地 HDD、本地 SSD、网络附加存储等)交互,这通常比 RAM(即非持久消息所在的位置)慢几个数量级。
我正在阅读消息队列,发现消息可以有两种类型:持久性和非持久性。
持久性消息存储在 disk/database 中,以便它们在代理重启后仍然存在,而非持久性消息存储在内存中,在代理重启后不存在。
持久消息传递通常比非持久传递慢。
但我想不出非持久消息的具体用例。
任何人都可以举例说明程序员何时应该使用非持久消息。
一般来说,当您丢失一些消息并没有多大关系时。 例如,铁路信号......信号每隔几秒发送一次它们的状态。如果一两个人迷路了,就会有更多人来。 或者股票价格显示...如果显示有一点无法更新,那也没什么大不了的。此处不讨论交易 activity - 只是显示在 public 区域或其他地方。
除了可能不需要持久性的特定 "business" 应用程序之外,非持久性消息可能优于持久性消息的另一个重要原因是 - 性能。发送和使用非持久消息几乎总是比使用持久消息的相同操作快得多。在处理持久消息时,代理必须与存储设备(例如本地 HDD、本地 SSD、网络附加存储等)交互,这通常比 RAM(即非持久消息所在的位置)慢几个数量级。