ActiveMQ之Prefect机制

ActiveMQ使用预取限制(Prefetch Limit)控制发送给消费者的消息最大数量,以避免资源耗尽。消费者确认50%预取消息后,Broker会再次发送。预取值可根据数据量大小设置,大数据量时预取值宜大,小数据量时宜小。慢速消费者定义为待处理消息超过预取值的2倍。预取策略可在ConnectionFactory或Connection上配置,影响所有或特定连接。消费者池可能导致消息顺序问题,建议关闭消费者池或预取值设为0。高预取值提高性能,但可能增加内存使用。
摘要由CSDN通过智能技术生成

简介

ActiveMQ的设计目标是成为一个高性能的消息总线。这意味着使用SEDA架构可以异步执行尽可能多的工作。 为了有效利用网络资源,Broker利用“推送”模型向消费者发送消息。 这可确保消费者始终拥有准备处理的消息的本地缓冲区。 替代方案是让消费者明确地从Broker那里提取消息。 单独提取消息不是非常有效,并且会增加每个消息的延迟。

但是,在不限制推送给消费者的消息数量的情况下,客户端的资源可能会被耗尽。因为消息消费通常比消息发送慢的多。为了避免这种情况,ActiveMQ使用预取限制(Prefetch Limit)来限制可以一次发送给单个消费者的最大消息数。消费者依次使用预取限制来调整其预取消息缓冲区的大小。

一旦broker向消费者发送了预取数量的消息,它将不会再向该消费者发送任何消息,直到消费者至少确认了50%的预取消息,比如prefetch size / 2。当broker收到确认后,它将向消费者发送prefect size一半的消息,以填充消费者的本地缓冲区。注意,可以为每个消费者指定预取消息数量。

在数据量较大的情况下,建议使用较大的预取值。但是,对于数据量较小的情况,每个消息需要很长时间处理,预取值应该设置为1.这可以保证消费者一次只处理一条消息。但是,将预取值设置为0将导致消费者每次轮询一条消息,而不是将消息推送给消费者。

  • 何为慢速消费者?

一个消费者当前待处理的消息数量达到配置的prefetch size的2倍以上,那么该消费者就是慢速消费者。

指定Prefect策略

你可以在ActiveMQConnectionFactory或ActiveMQConnecti

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值