个人名片:
博主:酒徒ᝰ.
个人简介:沉醉在酒中,借着一股酒劲,去拼搏一个未来。
本篇励志:三人行,必有我师焉。
本项目基于B站黑马程序员Java《SpringCloud微服务技术栈》,SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式
【SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 点击观看
二、RabbitMQ快速入门
3. 快速入门
HelloWord案例
官方的HelloWorld是基于最基础的消息队列模型来实现的,只包括三个角色:
publisher:消息发布者,将消息发送到队列queue
queue:消息队列,负责接受并缓存消息
consumer:订阅队列,处理队列中的消息
案例:完成官方Demo中的hello world案例
实现步骤:
导入课前资料中的demo工程mq-demo文件夹
运行publisher服务中的测试类PublisherTest中的测试方法testSendMessage()
查看RabbitMQ控制台的消息
启动consumer服务,查看是否能接收消息
总结:
- 基本消息队列的消息发送流程:
建立connection
创建channel
利用channel声明队列
利用channel向队列发送消息- 基本消息队列的消息接收流程:
建立connection
创建channel
利用channel声明队列
定义consumer的消费行为handleDelivery()
利用channel将消费者与队列绑定
在分布式系统和微服务架构中,消息队列作为一种高效的通信手段,发挥着举足轻重的作用。
一、消息发送流程
关系基本消息队列的消息发送流程通常包括以下几个步骤:
- 构造消息:生产者首先需要构造一条待发送的消息。消息通常包含一些有效数据,如业务数据、状态信息等。
- 选择队列:生产者需要根据业务需求选择合适的队列作为消息的目标。在关系基本消息队列中,可以选择队列的策略包括:直接、主题、路由等。
- 发送消息:生产者将待发送的消息发送到选择的队列中。在发送过程中,可以设置一些参数,如消息的优先级、延迟时间等。
- 确认消息:为了确保消息的可靠传输,生产者在发送消息后需要进行确认。确认方式可以是自动或手动,根据实际需求选择。
二、消息接受流程
关系基本消息队列的消息接受流程通常包括以下几个步骤:
- 提取消息:消费者从所订阅的队列中提取待处理消息。在这个过程中,消费者需要指定合适的提取策略,如:阻塞、轮询等。
- 处理消息:消费者在接收到消息后,根据业务逻辑对消息进行处理。处理方式可以是异步或同步,具体取决于应用场景。
- 反馈消息:处理完成后,消费者可以将处理结果反馈回队列,以便其他消费者或系统能够及时获取并处理。
三、示例分析
假设在一个电商系统中,当用户完成订单支付后,需要向仓库系统发送一条库存增加的消息。我们可以使用关系基本消息队列来实现这一流程:
- 用户在电商系统中完成订单支付后,系统会生成一条库存增加的消息。
该消息通过关系基本消息队列发送到仓库系统。在这个过程中,我们可以选择一个具有持久化存储和高可用性的队列服务,以确保消息的可靠传输。- 仓库系统的消费者从队列中提取该消息,并调用仓库管理系统的API来增加相应商品的库存。在这个过程中,消费者可以采用异步处理的方式,以提高系统的响应性能。
- 库存增加操作完成后,消费者将处理结果反馈回队列,供其他消费者或系统查询和处理。
总结
关系基本消息队列在应用中具有重要性和灵活性,它实现了系统之间的高效通信,并能够应对分布式系统中的各种挑战。通过了解关系基本消息队列的消息发送流程和消息接受流程,我们可以更好地应用这一技术来解耦、削峰填谷、提高系统可用性等。未来,随着技术的不断发展和应用场景的不断丰富,关系基本消息队列将会在更多领域得到广泛应用和改进。