rabbitmq 发送确认机制

rabbitmq:
  host: 192.168.88.22
  port: 5672
  username: admin
  password: admin
  #开启 confirm 确认机制
  publisher-confirms: true
  #开启 return 确认机制
  publisher-returns: true
  #设置为 true 后 消费者在消息没有被路由到合适队列情况下会被return监听,而不会自动删除
  template:
    mandatory: true
  #消费者消息签收模式为自动时,如果消费端处理出现异常并且被抛出了,该条消息就会一直被重新消费
  listener:
    direct:
      acknowledge-mode: manual # 开启 ack 手动确认
    simple:
      #消费者最小数量
      #concurrency: 1
      #max-concurrency: 1
      acknowledge-mode: auto
      retry:
        # 是否开启消费者重试(为false时关闭消费者重试)
        enabled: true
        #最大重试重新投递消息次数
        max-attempts: 1
        initial-interval: 1000ms
      ##重试次数超过上面的设置之后是否丢弃
      default-requeue-rejected: true


import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.connection.CorrelationData;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Slf4j
@Component
public class ConfirmAndReturnCallback implements RabbitTemplate.ConfirmCallback, RabbitTemplate.ReturnCallback  {
    @Override
    public void confirm(CorrelationData correlationData, boolean ack, String cause) {
        if (ack) {
            log.info("发送确认,correlationData={} ,ack={}, cause={}", correlationData, ack, cause);
        } else {
            log.error("消息发送异常!");

        }
    }

    @Override
    public void returnedMessage(Message message, int replyCode, String replyText, String exchange, String routingKey) {
        log.info("returnedMessage ===> replyCode={} ,replyText={} ,exchange={} ,routingKey={}", replyCode, replyText, exchange, routingKey);
    }


    @Autowired
    public void setRabbitTemplate(RabbitTemplate rabbitTemplate){
        rabbitTemplate.setConfirmCallback(this);
        rabbitTemplate.setReturnCallback(this);
    }



}





@Autowired
private RabbitTemplate rabbitTemplate;

/**
 * 修改 消息通过rabbitmq同步ES
 *
 * @param gasOrder
 */
private void sendMessageToEs(GasOrder gasOrder) {

    EsMsg msg = new EsMsg("demo", "test_order", "insert", testOrder, UUID.randomUUID().toString());
    String sendOrder = JSON.toJSONString(msg);
    rabbitTemplate.convertAndSend("sycToEsExchange", "sycToEs_routingkey", JSON.toJSONString(msg));
    log.info("send message param : {}, rtn : {}", sendOrder, sendOrder);
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值