activeMQ-15常见activemq问题
展开全部
同步发送持久消息能够提供更好的可靠性,但这潜在地影响了程序的相应速度,因为在接受到 broker 的确认消息之前应用程序或线程会被阻塞。如果应用程序能够容忍一些消息的丢失,那么可以使用异步发送。异步发送不会在受到 broker 的确认之前一直阻塞 Producer.send 方法。
解决办法:
1)添加事务
2)设置异步参数
[1].设置ConnectionFactory时指定使用异步
[2].不在构造函数中指定,而是修改ConnectionFactory的配置
[3].在实例化后的ActiveMQConnection对象中设置异步发送
异步发送的弊端
1)异步发送丢失消息的场景是:生产者设置UseAsyncSend=true,使用producer.send(msg)持续发送消息。由于消息不阻塞,生产者会认为所有send的消息均被成功发送至MQ。如果服务端突然宕机,此时生产者端内存中尚未被发送至MQ的消息都会丢失。
此时,需要在发送时设置回调函数,从而知道消息是否发送成功:
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询