springBoot-rabbit MQ-设置手动确认ACK-Channel

自动确认消费,不管 try 中有没有异常,消息管理界面上队列里的消息都被消费了,没有ready和unacked状态栏;

手动确认,未被消费的消息有多少条都会在ready状态栏下,分发到消费端后,消费端没有回发ack的消息会在unacked状态栏中。

 

MQ配置的时候,如果配置了json解析器。如下:


    @Bean("exchangeSendPoEccIntegrationResult")
    RabbitTemplate exchangeSendPoEccIntegrationResult(ConnectionFactory connectionFactory) {
        RabbitTemplate rabbitTemplate = new RabbitTemplate(connectionFactory);
        rabbitTemplate.setMessageConverter(new Jackson2JsonMessageConverter());
        return rabbitTemplate;
    }

则程序会走自动确认消费,配置文件的配置就不生效了

用代码设置手动确认。就OK了

    /**
     * 因为这个listener container 是自己创建的,会抑制spring boot自动配置
,所以这些配置就不生效了。spring.rabbitmq.listener.*
     *
     * @param connectionFactory
     * @return
     */
    @Bean
    public SimpleRabbitListenerContainerFactory rabbitListenerContainerFactory(ConnectionFactory connectionFactory) {
        SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
        factory.setConnectionFactory(connectionFactory);
        factory.setMessageConverter(jsonConverter());
        factory.setErrorHandler(errorHandler());
        factory.setAcknowledgeMode(AcknowledgeMode.MANUAL);
        return factory;
    }
channel.basicNack(deliveryTag, false, true);
channel.basicAck(deliveryTag, false);

正确的消息被ack 了,那么在消费过程中有异常就需要channel.basicNack

第一,这条消息重新放回队列重新消费

第二,抛弃此条消息

MQ的并发:

1.采用全局锁(采用Zookeeper

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

javafanwk

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

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

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

打赏作者

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

抵扣说明:

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

余额充值