博客
关于我
电商项目——消息队列——第十一章——中篇
阅读量:326 次
发布时间:2019-03-04

本文共 1652 字,大约阅读时间需要 5 分钟。

RabbitMQ 简介与使用实践

RabbitMQ 简介

RabbitMQ 是一个开源的消息队列系统,广泛应用于分布式系统中的消息中继与解耦。其核心功能包括点对点排队和发布/订阅模式,支持异步处理、大规模流量处理以及系统间解耦等场景。

消息代理与使用场景

消息代理是 RabbitMQ 的核心功能,负责接收、存储和分发消息。其主要场景包括:

  • 异步处理:例如用户注册时,发送邮件和短信可以作为异步任务处理。
  • 应用解耦:通过将业务逻辑移出消息队列,减少服务间耦合。
  • 流量监控:处理大并发请求,防止系统过载。
  • RabbitMQ 安装与配置

    安装命令

    docker run --name rabbitmq \-p 5671:5671 -p 5672:5672 \-p 4369:4369 -p 25672:25672 \-p 15671:15671 -p 15672:15672 \rabbitmq:management

    安装完成后,访问 虚拟机IP:15672 进入管理界面。

    SpringBoot 整合

  • 依赖添加:

    org.springframework.boot
    spring-boot-starter-amqp
  • 配置管理:在 application.yml 中添加:

    spring:    rabbitmq:        host: 192.168.56.10        port: 5672        virtual-host: #
  • 启用插件:在主类加注解 @EnableRabbit。

  • Exchange 类型与操作

    RabbitMQ 提供四种交换机类型,常用 DirectExchange 和 TopicExchange。

    DirectExchange

    直接交换机,消息直接投送至队列,无路由键转换。

    TopicExchange

    主题交换机,基于主题模式路由消息,支持多级匹配。

    FanoutExchange

    扇出交换机,消息同时投送至所有绑定的队列。

    Exchange 绑定

  • 创建交换机:

    amqpAdmin.declareExchange(new DirectExchange("hello-java-exchange", true, false));
  • 创建队列:

    amqpAdmin.declareQueue(new Queue("hello-java-queue", true, false, false));
  • 绑定交换机与队列:

    amqpAdmin.declareBinding(new Binding("hello-java-queue", Binding.DestinationType.QUEUE, "hello-java-exchange", "hello-java-queue", null));
  • 消息可靠传输

    发送端确认

  • 配置发送端:

    rabbitTemplate.setConfirmCallback(new ConfirmCallback() {    @Override    public void confirm(CorrelationData correlationData, boolean ack, String cause) {        // 确认消息成功接收    }});
  • 发送消息时启用确认机制:

    spring.rabbitmq.publisher-confirm-type=correlated
  • 消费端确认

  • 配置消费端:

    spring.rabbitmq.listener.simple.acknowledge-mode=manual
  • 消费消息时手动确认:

    channel.basicAck(deliveryTag, false);
  • 结论

    通过以上配置和实践,RabbitMQ 可以有效支持系统的消息中继与解耦,提升消息处理能力和系统稳定性。

    转载地址:http://dkhq.baihongyu.com/

    你可能感兴趣的文章
    python列表生成字典_Python中将字典转换为列表的方法
    查看>>
    python列表对应元素合并为列表及判断一个列表是几维
    查看>>
    python+flask计算机毕业设计骨科门诊患者档案管理系统(程序+开题+论文)
    查看>>
    python+flask计算机毕业设计高校体测管理系统的设计与实现(程序+开题+论文)
    查看>>
    python+flask计算机毕业设计高校体育赛事系统(程序+开题+论文)
    查看>>
    python+flask计算机毕业设计高校危化品管理系统(程序+开题+论文)
    查看>>
    python+flask计算机毕业设计高校教学档案管理系统(程序+开题+论文)
    查看>>
    python+flask计算机毕业设计高校教学督导平台(程序+开题+论文)
    查看>>
    python+flask计算机毕业设计高校校内景点平台(程序+开题+论文)
    查看>>
    python+flask计算机毕业设计高校校园线上跳蚤市场的系统设计(程序+开题+论文)
    查看>>
    Python图形处理
    查看>>
    python+flask计算机毕业设计高校物品使用互益平台的设计与实现(程序+开题+论文)
    查看>>
    Python函数,匿名函数,高阶函数,内置函数——08
    查看>>
    python+flask计算机毕业设计高校疫情防控管理平台(程序+开题+论文)
    查看>>
    python+flask计算机毕业设计高校网上迎新系统(程序+开题+论文)
    查看>>
    python+flask计算机毕业设计高校运动会(程序+开题+论文)
    查看>>
    python+flask计算机毕业设计高校选课系统(程序+开题+论文)
    查看>>
    Python+Jenkins+Allure Report接口自动化测试持续集成
    查看>>
    python+locust电商全流程性能测试
    查看>>
    Python函数运行的可执行文件的终端输出如何以一般方式静音?
    查看>>