持久性传递和非持久性传递有什么区别?
常见问题解答 > 持久性问题 > 持久性传递和非持久性传递有什么区别
持久性传递和非持久性传递有什么区别?
ActiveMQ Classic 支持持久性传递和非持久性传递。根据 JMS 规范,默认传递模式为持久性。持久性标志在 MessageProducer 上为所有消息设置,使用 setDeliveryMode 方法。它也可以在每个消息的基础上通过使用 send 方法的长格式来指定。持久性是单个消息的属性。
主要区别在于,如果您使用持久性传递,消息将被持久化到磁盘/数据库,以便它们能够在代理重新启动后存活。当使用非持久性传递时,如果您杀死代理,那么您将丢失所有正在传输的消息。
这种区别的影响是持久性消息传递通常比非持久性传递慢,尤其是在不使用 异步发送 时。