springboot集成rabbitmq

简介

RabbitMQ 作为一个消息中间件,解耦消息发送与接收。作为消息发送者通过 virtual host 发送到exchange,完成了消息发送。消息队列与exchange 通过 routing key 进行绑定,routing key 把消息路由到绑定的队列。消息的接收端通过监听队列,即可对消息进行消费

消息传递

在这里插入图片描述

RabbitMQ 名词

  • Server: 也叫做broker ,理解为一台机器
  • Virtual host: 虚拟地址,用于逻辑隔离,最上层的消息路由,一个Virtual host里面可以有若干个Exchage和Queue,但同一个Virtual host里面不能有相同名称的Exchage和Queue
  • Channel:网络信道,一个网络会话的任务
  • Exchange:交换机,接收消息,根据路由键转发消息到绑定队列
  • Binding:Exchage和Queue之间的虚拟连接,binding中可以包含routing key
  • Routing key:一个路由规则
  • Queue:保存具体的消息的容器

exchange 与queue 是多对多的关系,一个交换机可以绑定多个队列,一个对立也可以和多个交换机绑定

Springboot 集成RabbitMQ

实际环境中,消息发送者与接收者,必须分离,写博客时候,写在了一块。配置也在一块。步骤如下

  1. 导入依赖
  2. 添加配置
  3. 写代码生产者与消费者
  4. 测试

依赖

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-amqp</artifactId>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

配置文件

spring:
  rabbitmq:
    host: 192.168.116.131
    username: admin
    password: admin
    virtual-host: /
    connection-timeout: 30000  # listener 是消息接收者配置,发送者无需配置
    listener:
      simple:
        concurrency: 3  #并发数
        max-concurrency: 5 #最大并发
        auto-startup: true   #自动开启监听
        prefetch: 1  #同一时间处理消息数
        acknowledge-mode: manual  #签收模式  manual:手动  
  • 发送者
@Autowired
private RabbitTemplate rabbitTemplate;

public void sendToMsg() {
    InfoModel infoModel = new InfoModel().setMessage("this test rbmq").setMsgId("12");
    CorrelationData correlationData = new CorrelationData();
    correlationData.setId("1");
    rabbitTemplate.convertAndSend("t-exchange", "ikang.key", infoModel, correlationData);
    System.out.println("发送信息成功=====");
}
  • 消息接收者
@RabbitListener(bindings = @QueueBinding(
        value = @Queue(value="t-queue",durable = "true",autoDelete = "no"),
        exchange = @Exchange(value="t-exchange",durable = "true", type = "topic"),
        key="ikang.key"
))


@RabbitHandler
public void receiverMesg(@Payload InfoModel infoModel, @Headers Map<String, Object> header, Channel channel) throws IOException {
    System.out.println("接收消息:" + infoModel);
    long l = (long) header.get(AmqpHeaders.DELIVERY_TAG);
    channel.basicAck(l, false);

}
SpringBoot集成RabbitMQ可以通过以下步骤实现。首先,在配置文件中添加RabbitMQ的连接信息。例如,在application.yml文件中配置RabbitMQ的主机、端口、用户名和密码等信息。\[1\]然后,引入SpringBoot整合RabbitMQ的依赖,包括spring-boot-starter-amqp和spring-rabbit-test等依赖项。\[2\]接下来,可以编写代码来实现与RabbitMQ的交互,例如发送和接收消息等操作。通过使用RabbitTemplate和@RabbitListener等注解,可以方便地实现消息的发送和接收。最后,可以通过运行SpringBoot应用程序来测试RabbitMQ集成是否成功。 #### 引用[.reference_title] - *1* [SpringBoot 集成RabbitMQ](https://blog.csdn.net/July_whj/article/details/120634833)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Springboot整合RabbitMQ](https://blog.csdn.net/weixin_49076273/article/details/124991012)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [SpringBoot教程(十五) | SpringBoot集成RabbitMq](https://blog.csdn.net/lsqingfeng/article/details/123652520)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值