任何人都可以分享有关 jms 队列与 vm 队列的知识。虚拟机队列在哪里保存消息?

Can anyone share knowledge on jms queue vs vm queue. where vm queue persist messages?

任何人都可以分享有关 jms 队列与 vm 队列的知识。虚拟机队列持久化消息的地方。请分享任何可以理解的例子

vm 队列与 jms 队列..我正在使用 activemq 消息代理来实现 jms。我想知道jms队列和vm队列的区别

VM在内存中,只支持队列,非持久化

JMS,独立的消息代理,支持队列和主题,可以持久化

因此对于 VM,当您的 Mule 实例出现故障时,仍在内存队列中的消息将丢失。

文档中的 link 为您提供了更多信息: https://docs.mulesoft.com/mule-management-console/v/3.7/reliability-patterns#comparing-endpoints-in-reliability-patterns

Mule 的 VM 默认 将消息保存在内存队列 中。这就是服务器出现故障时未继续处理的消息丢失消息的原因。
您可以将 VM 配置为将消息 保存在磁盘 上。类似以下内容:-

<vm:connector name="SaveToDisc" doc:name="VM">
   <vm:queue-profile maxOutstandingMessages="500" >
     <file-queue-store/>
   </vm:queue-profile>
</vm:connector>   

请注意: VM 文件持久性不适用于集群环境。
参考:- https://docs.mulesoft.com/mule-user-guide/v/3.6/vm-transport-reference
另一方面,JMS 是 Mule 外部的并且使用消息代理,所以如果 Mule 服务器关闭它不会影响,因为当 Mule 服务启动时未处理的仍然可以访问。

如需更多比较,您可以查看以下文章:- https://www.ricston.com/blog/vm-jms/