activemq控制发送频率_ActiveMq-常见的问题

本文探讨了ActiveMQ在服务挂掉、消息丢失、消息消费不均等问题及其解决办法,包括调整持久化存储限制、开启事务、设置prefetch值、管理死信队列和自定义重发策略等措施。
摘要由CSDN通过智能技术生成

1.服务挂掉

ActiveMQ的储存机制:

在通常的情况下,非持久化消息是存储在内存中的,持久化消息是存储在文件中的,它们的最大限制在配置文件的节点中配置。

如果,在非持久化消息堆积到一定程度,内存告急的时候,ActiveMQ会将内存中的非持久化消息写入临时文件中,以腾出内存。

虽然都保存到了文件里,但它和持久化消息的区别是,重启后持久化消息会从文件中恢复,非持久化的临时文件会直接删除。

持久化存储

当消息量足够大时,持久化消息存储文件超过最大限制(比如设置文件最大2G)。

此时生产者发送消息阻塞,但消费者可正常连接并消费消息,等消息消费掉一部分,文件删除又腾出空间之后,生产者又可继续发送消息,服务自动恢复正常。

非持久化存储

当采用非持久化消息设置后,消息量足够大时,非持久化消息存储文件超过最大限制(假设设置最大2G)。

这时生产者阻塞,而消费者可以连接,却不能消费或者原本慢速消费的消费者,消费突然停止。整个系统可连接,但是无法提供服务,就这样挂了。

解决方案:

此时,可以看出为了保证消息的安全性和服务稳定,最好采用消息持久化,如果不用,在部分情况下应增大临时文件限制。

2.消息丢失

这得从java的java.net.SocketException异常说起。

简单点说就是当网络发送方发送一堆数据,然后调用close关闭连接之后。这些发送的数据都在接收者的缓存里,接收者如果调用read方法仍旧能从缓存中读取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值