热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

消息队列06SpringBoot搭建Rabbitmq投递确认和消费应答

消息队列教程目录链接https:my.oschina.netu4039389?tabnewest&catalogId7011524graldecompile&apo
gralde
compile "org.springframework.cloud:spring-cloud-starter-bus-amqp"
application.properties


spring.rabbitmq.host=127.0.0.1
spring.rabbitmq.port=5672
spring.rabbitmq.prod.port=5674
spring.rabbitmq.username=admin
spring.rabbitmq.password=admin
spring.rabbitmq.virtual-host=/

#投递确认
spring.rabbitmq.publisher-cOnfirms=true
# 发送回调
spring.rabbitmq.publisher-returns=true
# 消费手动确认
spring.rabbitmq.listener.simple.acknowledge-mode=manual
spring.rabbitmq.listener.direct.acknowledge-mode=manual

#消费者最小数量
spring.rabbitmq.listener.simple.cOncurrency=1
#消费之最大数量
spring.rabbitmq.listener.simple.max-cOncurrency=10
#在单个请求中处理的消息个数,他应该大于等于事务数量(unack的最大数量)
spring.rabbitmq.listener.simple.prefetch=1

 

代码

消费者

@Component
public class DirectReceiver {


    @RabbitListener(bindings = @QueueBinding(//绑定队列和交换机
            value = @Queue(value = "Direct-A"),//创建queuqe
            exchange = @Exchange(value = "DirectExchange",type = "direct"),//创建交换机
            key = "Direct-A"//路由规则,routingkey如果是Direct-A就发到这个监听

    ))
    @RabbitHandler
    public  void directReceiverA(Message message, Channel channel) throws Exception{
        System.out.println("directReceiverA:"+message.toString() );
        System.out.println("directReceiverA:"+message.getMessageProperties().getAppId() );
        System.out.println("directReceiverA:"+message.getMessageProperties().getMessageId() );
        System.out.println("directReceiverA:"+message.getMessageProperties().getReceivedExchange() );
        System.out.println("directReceiverA:"+message.getMessageProperties().getReceivedRoutingKey() );
        System.out.println("directReceiverA:"+message.getMessageProperties().getDeliveryTag() );
        System.out.println("directReceiverA:"+message.getMessageProperties().getHeaders() );
        //睡眠10秒,10秒后再应答消息队列
        Thread.sleep(10000);
        //应答消息队列
        channel.basicAck(message.getMessageProperties().getDeliveryTag(),false);

    }
}

生产者

@Component
public class DirectSender {

    @Autowired
    private RabbitTemplate rabbitTemplate;
    public void send() throws Exception  {
        CorrelationData correlatiOnData= new CorrelationData(UUID.randomUUID().toString());
        String cOntext= "hi, i am DirectSender  A message  ";
        this.rabbitTemplate.convertAndSend("DirectExchange", "Direct-A", context,correlationData);
        //设置超时时间
        boolean isAck =   correlationData.getFuture().get(1, TimeUnit.MINUTES).isAck();
        if(isAck){
            System.out.println("消息已经投递:"+correlationData.getId());
        }else{
            System.out.println("消息没有被投递:"+correlationData.getId());
        }

    }

}

 

消息发送出去之后显示已经投递

消费者已经消费了

但是线程休眠,从管理界面可以看到消息一致 处于unacked的状态

10秒后Unacked的状态已经不见


推荐阅读
  • Spring Boot + RabbitMQ 消息确认机制详解
    本文详细介绍如何在 Spring Boot 项目中使用 RabbitMQ 的消息确认机制,包括消息发送确认和消息接收确认,帮助开发者解决在实际操作中可能遇到的问题。 ... [详细]
  • 利用RabbitMQ实现高效延迟任务处理
    本文详细探讨了如何利用RabbitMQ实现延迟任务,包括其应用场景、实现原理、系统设计以及具体的Spring Boot实现方式。 ... [详细]
  • SpringMVC RestTemplate的几种请求调用(转)
    SpringMVCRestTemplate的几种请求调用(转),Go语言社区,Golang程序员人脉社 ... [详细]
  • 一、搭建项目创建Maven项目导入rabbitmq包com.rabbitmqamqp-clien ... [详细]
  • 利用GitHub热门资源,成功斩获阿里、京东、腾讯三巨头Offer
    Spring框架作为Java生态系统中的重要组成部分,因其强大的功能和灵活的扩展性,被广泛应用于各种规模的企业级应用开发中。本文将通过一份在GitHub上获得极高评价的Spring全家桶文档,探讨如何掌握Spring框架及其相关技术,助力职业发展。 ... [详细]
  • 历经两个月,他成功斩获阿里巴巴Offer
    经过两个月的努力,一位普通的双非本科毕业生最终成功获得了阿里巴巴的录用通知。 ... [详细]
  • RabbitMQ 核心组件解析
    本文详细介绍了RabbitMQ的核心概念,包括其基本原理、应用场景及关键组件,如消息、生产者、消费者、信道、交换机、路由键和虚拟主机等。 ... [详细]
  • 从理想主义者的内心深处萌发的技术信仰,推动了云原生技术在全球范围内的快速发展。本文将带你深入了解阿里巴巴在开源领域的贡献与成就。 ... [详细]
  • 本文详细探讨了HTML表单中GET和POST请求的区别,包括它们的工作原理、数据传输方式、安全性及适用场景。同时,通过实例展示了如何在Servlet中处理这两种请求。 ... [详细]
  • 深入解析SpringMVC核心组件:DispatcherServlet的工作原理
    本文详细探讨了SpringMVC的核心组件——DispatcherServlet的运作机制,旨在帮助有一定Java和Spring基础的开发人员理解HTTP请求是如何被映射到Controller并执行的。文章将解答以下问题:1. HTTP请求如何映射到Controller;2. Controller是如何被执行的。 ... [详细]
  • 本文档汇总了Python编程的基础与高级面试题目,涵盖语言特性、数据结构、算法以及Web开发等多个方面,旨在帮助开发者全面掌握Python核心知识。 ... [详细]
  • 本文介绍了如何在三台CentOS 7.5虚拟机上通过Docker部署RabbitMQ集群,包括环境准备、容器创建、集群配置及故障处理等内容。 ... [详细]
  • windows安装RabbitMQ遇到epmderrorforhostxxx:address(cannotconnecttohost/port)错误解决方法
    未安装服务,Windows下,dev环境用bat运行运行RabbitMQ时报如下错误 Configuringloggerredirection09:11:07.009[warnin ... [详细]
  • RocketMQ在秒杀时的应用
    目录一、RocketMQ是什么二、broker和nameserver2.1Broker2.2NameServer三、MQ在秒杀场景下的应用3.1利用MQ进行异步操作3. ... [详细]
  • ### 优化后的摘要本学习指南旨在帮助读者全面掌握 Bootstrap 前端框架的核心知识点与实战技巧。内容涵盖基础入门、核心功能和高级应用。第一章通过一个简单的“Hello World”示例,介绍 Bootstrap 的基本用法和快速上手方法。第二章深入探讨 Bootstrap 与 JSP 集成的细节,揭示两者结合的优势和应用场景。第三章则进一步讲解 Bootstrap 的高级特性,如响应式设计和组件定制,为开发者提供全方位的技术支持。 ... [详细]
author-avatar
如果你在的时候的世界_266
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有