消息确认ACK机制

ACK

在这里插入图片描述

模拟异常

假设consumer 在处理消息的时候出现异常
消费者的InfoReceiver.java

import org.springframework.amqp.core.ExchangeTypes;
import org.springframework.amqp.rabbit.annotation.Exchange;
import org.springframework.amqp.rabbit.annotation.Queue;
import org.springframework.amqp.rabbit.annotation.QueueBinding;
import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
/**
* 消息接收者
* @author Administrator
* @RabbitListener bindings:绑定队列
* @QueueBinding  value:绑定队列的名称
*                exchange:配置交换器
*
* @Queue value:配置队列名称
*        autoDelete:是否是一个可删除的临时队列
*
* @Exchange value:为交换器起个名称
*           type:指定具体的交换器类型
*/
@Component
@RabbitListener(
             bindings=@QueueBinding(
                           value=@Queue(value="${mq.config.queue.info}",autoDelete="true"),
                           exchange=@Exchange(value="${mq.config.exchange}",type=ExchangeTypes.DIRECT),
                           key="${mq.config.queue.info.routing.key}"
             )
       )
public class InfoReceiver {
       /**
        * 接收消息的方法。采用消息队列监听机制
        * @param msg
        */
       
       @RabbitHandler
       public void process(String msg){
             System.out.println("Info........receiver: "+msg);
             throw new RuntimeException();
       }
}

在这里插入图片描述

解决方案

消费者的application.yml
spring:
  application:
    name: 03-rabbitmq-exchange-direct-consumer
  rabbitmq:
    host: 192.168.1.62
    port: 5672
    username: superrd
    password: superrd
    listener:
      simple:
        retry:
          enabled: true #开启重试
          max-attempts: 5 #重试次数,默认为 3 次
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值