RabbitMQ入门

本文介绍了RabbitMQ入门,包括SpringAMQP的使用,如发送和接收消息。讨论了单体与分布式架构的区别,并详细阐述了工作队列、交换机在消息传递中的作用,以及发布订阅的不同模式(Fanout、Direct、Topic)。还提到了消息转换器的配置,以支持不同格式的消息传递。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

RabbitMQ入门

单体架构的优点:简单方便,但是扩展性差。
分布式结构:对也业务进行拆分,每一个业务模块都作独立项目开发,可以降低耦合度。

SpringAMQP

高级消息队列协议,传递业务消息的规则。

SpringAMQP --发送消息

(publisher发送者)
①在父工程中导入依赖

<!--AMQP依赖,包含RabbitMQ-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-amqp</artifactId>
</dependency>

②添加mq的连接消息

spring:
  rabbitmq:
    host: 127.0.0.1 # 主机名
    port: 5672 # 端口
    virtual-host: / # 虚拟主机
    username: guest # 用户名
    password: guest # 密码

③注入rabbitTemplate

@Autowired
private RabbitTemplate rabbitTemplate;

④测试

@Test
public void testSendMessage2SimpleQueue(){
    String queueName = "simple queue";
    String message = "hello,spring amqp";
    rabbitTemplate.convertAndSend(queueName,message);//队列名称,消息内容
}

SpringAMQP–接收消息

(consumer监听信息)

①在配置文件yml中

 spring:
   rabbitmq:
    host: 127.0.0.1 #地址
    virtual-host: / #虚拟主机
    username: guest #用户名
    password: guest #密码
    port: 5672 #端口号

②编写消费者逻辑

@Component
public class SpringRabbitListener {
    @RabbitListener(queues = "simple.queue")//监听的队列名称
    public void listenSimpleQueue(String msg){
        System.out.println("消费者接受到消息"+msg);
    }

Work Queue工作队列

多个消费者绑定一个队列,同一条消息只会被一个消费者处理(防止消息堆积,提高处理速度)

交换机的作用

①接收publisher发送的消息
②将消息按照规则路由到与之绑定的队列
③不能缓存消息,路由失败,消息丢失
④FanoutExchange的会将消息路由到每一个绑定的队列

发布订阅

概念:允许同一信息发送给多个消费者,实现方式加入了exchange交换机(消息路由而不是存储只负责消息的转发)

类型:
①fanout广播
②Direct路由
③Topic话题

fanout广播模式

接收到的所有消息,只发送给绑定了queue的每一个队列
①手动绑定队列
在这里插入图片描述
②发送消息
在这里插入图片描述
③消息接收
在这里插入图片描述

Direct路由模式

将接收到的消息发送给指定的Queue
(Exchange通过对比bindingKey和RoutingKey是否一致,如果一致发送指定的消息)
①接收消息
在这里插入图片描述
②发送消息
在这里插入图片描述

Topic话题模式

和direct几乎相同,只不过topic的routingKey可以是多个单词的列表。*表示一个单词,#0个或者多个单词
(多种类型支持多个通配符)
接收端:
在这里插入图片描述
发送端:
在这里插入图片描述

消息转换器

①导入依赖

<dependency>
    <groupId>com.fasterxml.jackson.dataformat</groupId>
    <artifactId>jackson-dataformat-xml</artifactId>
    <version>2.9.10</version>
</dependency>

②发送端
在这里插入图片描述
③在启动类中设置消息转换器

/*消息转换器*/
@Bean
public MessageConverter messageConverter(){
    return new Jackson2JsonMessageConverter();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值