分布式消息通信ActiveMQ原理-发送策略-笔记
持久化消息和非持久化消息的发送策略 消息同步发送和异步发送 ActiveMQ支持同步、异步两种发送模式将消息发送到broker上。 同步发送过程中,发送者发送一条消息会阻塞直到broker反馈一个确认消息,表示消息已经被broker处理。 这个机制提供了消息的安全性保障 ,但是由于是阻塞的操作,会影响到客户端消息发送的性能 异步发送的过程中,发送者不需要等待broker提供反馈,所以性能相对较高。但是可能会出现消息丢失的情况。 所以使用异步发送的前提是在某些情况下 允许出现数据丢失 的情况。 默认情况下,非持久化消息是异步发送的,持久化消息并且是在非事务模式下是同步发送的。 但是在开启事务的情况下,消息都是异步发送。由于异步发送的效率会比同步发送性能更高。 所以在 发送持久化消息的时候,尽量去开启事务会话。 除了持久化消息和非持久化消息的同步和异步特性以外,我们还可以通过以下几种方式来设置异步发送 ConnectionFactory connectionFactory= new ActiveMQConnectionFactory("tcp://192.168.11.153:61616?jms.useAsyncSend=true"); ((ActiveMQConnectionFactory) connectionFactory).setUseAsyncSend(true); (