消息队列入门——RabbitMQ的简单使用

消息队列用于异步传输和解耦应用组件,如RabbitMQ实现AMQP协议,支持多种消息模式。通过创建发送者和接收者,可以实现简单消息发送与接收,例如在SpringBoot中使用RabbitTemplate和@RabbitListener。
摘要由CSDN通过智能技术生成

什么是消息队列

消息队列是一种通信模式,用于在应用程序组件之间异步传输消息。消息队列解耦了应用程序组件之间的连接,并允许您使用不同的编程语言或框架来构建不同的组件。消息队列允许发送方将消息发送到队列中,接收方则从队列中获取消息并进行处理。这种模式提供了一种可靠的方式来处理大量消息,并允许构建高度可扩展的分布式系统。

消息队列的主要作用是解耦和异步处理。它可以将消息发送方和接收方解耦,发送方只需要将消息发送到队列中,而无需关心接收方何时会处理该消息。接收方则可以根据自身的情况选择在适当的时间进行消息的处理,也可以选择多个消费者并发地处理消息。

此外,消息队列还可以用于削峰填谷,当某个系统的请求量突然增加时,消息队列可以缓存请求,使得系统可以逐步处理请求,从而避免系统的崩溃。同时,消息队列还可以用于数据分发和数据同步等场景。

AMQP(Advanced Message Queuing Protocol)是一种面向消息的中间件协议,用于在应用程序之间可靠地传递异步消息。它提供了一种可靠的、异步的、跨语言和跨平台的消息传递方式,支持多种编程语言和消息代理之间的互操作性。AMQP 的主要目标是提供一个统一的消息中间件协议,使得不同厂商开发的消息中间件可以实现互相通信,实现互操作性。 AMQP 也是一个开放标准,具有良好的扩展性和可靠性。RabbitMQ就是AMQP的一种实现。

消息队列的一种常用框架——RabbitMQ

RabbitMQ 简介

RabbitMQ 是一个开源的消息队列系统,它实现了高效的消息分发机制,可以让不同的应用程序之间通过消息传递来进行通信。RabbitMQ 的核心是 AMQP 协议。RabbitMQ 作为一个标准的 AMQP 实现,支持多种消息模式,例如:点对点模式、发布/订阅模式、路由模式、主题模式等。它具有很好的可伸缩性和可用性,同时还提供了灵活的插件机制,可以方便地扩展和定制功能。

RabbitMQ 快速入门

1.下载并部署RabbitMQ。基于docker容器。

docker run -it --rm --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3.11-management

2.在项目中引入相关依赖,并在配置文件中配置连接信息

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
spring:
  rabbitmq:
    host: localhost
    port: 15672
    username: guest
    password: guest

3.创建消息发送者

使用RabbitTemplate可以很方便地发送消息,它已经集成了Spring的消息发送机制,并且提供了一些更加高级的特性。

@Service
public class MessageSender {
    @Autowired
    private RabbitTemplate rabbitTemplate;
    public void sendMessage(String message) {
        rabbitTemplate.convertAndSend("myExchange", "myRoutingKey", message);
    }
}

4.创建消息接收者

使用@RabbitListener注解可以很方便地创建消息接收者,只需要指定监听的队列名称即可。

@Service
public class MessageReceiver {
    @RabbitListener(queues = "myQueue")
    public void receiveMessage(String message) {
        System.out.println("Received message: " + message);
    }
}

以上代码中,创建了一个名为“myQueue”的队列,并将它与名为“myExchange”的交换机进行绑定,绑定的路由键为“myRoutingKey”。需要注意的是,在连接前需要登录RabbitMQ的管理端,创建对应的路由、交换机和队列的信息。

接下来,使用RabbitTemplate类实例化一个RabbitMQ消息模板,并通过调用convertAndSend()方法向“myExchange”交换机发送一条消息(可以采用控制层请求响应来调用,或设置定时任务的方式),消息内容为“Hello, RabbitMQ!”,路由键为“myRoutingKey”。

最后,使用@RabbitListener注解标注的receiveMessage()方法监听“myQueue”队列中的消息,当有消息到达时,会自动调用该方法并输出消息内容。

这样,我们就成功地实现了一个简单的RabbitMQ消息发送和接收的应用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值