服务异步通信-快速入门案例

发布于:2023-09-22 ⋅ 阅读:(75) ⋅ 点赞:(0)

请添加图片描述
个人名片:

博主酒徒ᝰ.
个人简介沉醉在酒中,借着一股酒劲,去拼搏一个未来。
本篇励志三人行,必有我师焉。

请添加图片描述
本项目基于B站黑马程序员Java《SpringCloud微服务技术栈》,SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式

【SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 点击观看

二、RabbitMQ快速入门

3. 快速入门

HelloWord案例
官方的HelloWorld是基于最基础的消息队列模型来实现的,只包括三个角色:

publisher:消息发布者,将消息发送到队列queue
queue:消息队列,负责接受并缓存消息
consumer:订阅队列,处理队列中的消息

案例:完成官方Demo中的hello world案例
实现步骤:

  1. 导入课前资料中的demo工程mq-demo文件夹
    在这里插入图片描述

  2. 运行publisher服务中的测试类PublisherTest中的测试方法testSendMessage()
    在这里插入图片描述

  3. 查看RabbitMQ控制台的消息
    在这里插入图片描述

  4. 启动consumer服务,查看是否能接收消息
    在这里插入图片描述

总结:

  1. 基本消息队列的消息发送流程:
    建立connection
    创建channel
    利用channel声明队列
    利用channel向队列发送消息
  2. 基本消息队列的消息接收流程:
    建立connection
    创建channel
    利用channel声明队列
    定义consumer的消费行为handleDelivery()
    利用channel将消费者与队列绑定

在分布式系统和微服务架构中,消息队列作为一种高效的通信手段,发挥着举足轻重的作用。

一、消息发送流程

关系基本消息队列的消息发送流程通常包括以下几个步骤:

  • 构造消息:生产者首先需要构造一条待发送的消息。消息通常包含一些有效数据,如业务数据、状态信息等。
  • 选择队列:生产者需要根据业务需求选择合适的队列作为消息的目标。在关系基本消息队列中,可以选择队列的策略包括:直接、主题、路由等。
  • 发送消息:生产者将待发送的消息发送到选择的队列中。在发送过程中,可以设置一些参数,如消息的优先级、延迟时间等。
  • 确认消息:为了确保消息的可靠传输,生产者在发送消息后需要进行确认。确认方式可以是自动或手动,根据实际需求选择。

二、消息接受流程

关系基本消息队列的消息接受流程通常包括以下几个步骤:

  • 提取消息:消费者从所订阅的队列中提取待处理消息。在这个过程中,消费者需要指定合适的提取策略,如:阻塞、轮询等。
  • 处理消息:消费者在接收到消息后,根据业务逻辑对消息进行处理。处理方式可以是异步或同步,具体取决于应用场景。
  • 反馈消息:处理完成后,消费者可以将处理结果反馈回队列,以便其他消费者或系统能够及时获取并处理。

三、示例分析

假设在一个电商系统中,当用户完成订单支付后,需要向仓库系统发送一条库存增加的消息。我们可以使用关系基本消息队列来实现这一流程:

  • 用户在电商系统中完成订单支付后,系统会生成一条库存增加的消息。
    该消息通过关系基本消息队列发送到仓库系统。在这个过程中,我们可以选择一个具有持久化存储和高可用性的队列服务,以确保消息的可靠传输。
  • 仓库系统的消费者从队列中提取该消息,并调用仓库管理系统的API来增加相应商品的库存。在这个过程中,消费者可以采用异步处理的方式,以提高系统的响应性能。
  • 库存增加操作完成后,消费者将处理结果反馈回队列,供其他消费者或系统查询和处理。

总结

关系基本消息队列在应用中具有重要性和灵活性,它实现了系统之间的高效通信,并能够应对分布式系统中的各种挑战。通过了解关系基本消息队列的消息发送流程和消息接受流程,我们可以更好地应用这一技术来解耦、削峰填谷、提高系统可用性等。未来,随着技术的不断发展和应用场景的不断丰富,关系基本消息队列将会在更多领域得到广泛应用和改进。

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到