Rabbitmq - rabbitmq Listener监听

Listener监听

Listener的yml配置参数形式如下:

   listener:
     simple:
       prefetch: 1 # 一次拉取的数量
       concurrency: 5 # 消费端的监听个数(即@RabbitListener开启几个线程去处理数据。)
       max-concurrency: 10 # 消费端的监听最大个数
       acknowledge-mode: manual
       retry:
         multiplier: 1
         max-attempts: 3
         enabled: true
     direct:
       retry:
         enabled: true
         max-attempts: 3
       acknowledge-mode: manual
       auto-startup: true
     type: simple

在消费端,配置prefetch和concurrency参数便可以实现消费端MQ并发处理消息,下面详细叙述下listener下的几个参数的意思

listener.type 表示监听的类型 主要有两种 simple和direct 对于的监听容器是 
SimpleMessageListenerContainer和DirectMessageListenerContainer

listener.simple.prefetch: 
每个customer会在MQ预取一些消息放入内存的LinkedBlockingQueue中进行消费,这个值越高,消息传递的越快,
但非顺序处理消息的风险更高。如果ack模式为none,则忽略。如有必要,将增加此值以匹配txSize或messagePerAck。
不过在有些情况下,尤其是处理速度比较慢的大消息,消息可能在内存中大量堆积,消耗大量内存;以及对于一些严格要求顺序的消息,prefetch的值应当设置为1。
acknowledge-mode:表示消费端收到消息后的确认方式。
有三种确认方式:
自动确认:acknowledge="none"
手动确认:acknowledge="manual"
根据异常情况确认:acknowledge="auto"

其中自动确认是指,当消息一旦被Consumer接收到,则自动确认收到,并将相应 message 从 RabbitMQ 的消息缓存中移除。但是在实际业务处理中,很可能消息接收到,业务处理出现异常,那么该消息就会丢失。
如果设置了手动确认方式,则需要在业务处理成功后,调用channel.basicAck(),手动签收,如果出现异常,则调用channel.basicNack()方法,让其自动重新发送消息。
concurrency:
concurrency =1,即每个Listener容器将开启一个线程去
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员路同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值