RabbitMQ学习-Seven

再SpringBoot中使用MQ

1.创建SpringBoot项目

除了我们平常使用的一些工具依赖,还需要选择这个Spring for RabbitMQ依赖

2.需要在application.yml文件中进行配置

复制代码
server:
 port :9090
spring:
 application:
  name:producer
 rabbitmq:
  host: 你的主机名
  port: 5672
  virtual-host: 虚拟主机名称
  username: admin
  password: admin123

3.测试使用

复制代码
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;

@RestController
public class TestController {

    @Resource
    private TestService testService;

    @RequestMapping("test")
    public String test(String msg){
        testService.sendMsg(msg);
        return "success";
    }
}

@Service
public class TestService {
    
    @Resource
    private AmqpTemplate amqpTemplate; // 注入RabbitMQ的模板对象,用于发送消息
 
    @Override
    public void sendMsg(String msg) {
        // 发送消息到队列
        amqpTemplate.convertAndSend("queue1", msg);
 
        // 发送消息到交换机(订阅交换机,第二个参数为空)
        amqpTemplate.convertAndSend("wx1", "", msg);
 
        // 发送消息到交换机(路由交换机,第二个参数为路由key)
        amqpTemplate.convertAndSend("wx2", "a", msg);
    }
}

完善一下测试使用类

复制代码
import javax.annotation.Resource;

@Service
public class TestService {

    @Resource
    private AmqpTemplate amqpTemplate;

    public void sendMsg(String msg) {
        if (msg.startsWith("q_")) {
            // 发送消息到队列
            amqpTemplate.convertAndSend("queue1", msg);
        } else if (msg.startsWith("f_")) {
            // 发送消息到交换机(订阅交换机)
            amqpTemplate.convertAndSend("ex1", "", msg);
        } else if (msg.startsWith("r_")) {
            // 发送消息到交换机(路由交换机)
            if (msg.startsWith("r_a")) {
                amqpTemplate.convertAndSend("ex2", "a", msg);
            } else if (msg.startsWith("r_b")) {
                amqpTemplate.convertAndSend("ex2", "b", msg);
            }
        }
    }
}

此时从浏览器发送请求:localhost:9090/test?msg=....就可以发送消息到队列中

4.然后创建消费者项目

前期步骤一致,只是配置文件的端口号进行变更

复制代码
package com.qfedu.consumer.service;

import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Service;

@Service
//@RabbitListener(queues ={"queue1","queue2"})
// 首先通过RabbitListener注解监听队列
@RabbitListener(queues = "queue1")
public class ReceiveMsgService {

    // 然后通过RabbitHandler注解将队列中的数据作为入参使用
    @RabbitHandler
    public void receiveMsg(String msg) {
        System.out.println("接收Msg:" + msg);
    }

    // 另一个可能的消息接收方法,处理字节数组类型的数据
    //@RabbitHandler
    //public void receiveMsg(byte[] bs) {
    //    // 处理字节数组的逻辑
    //}
}

此时就在SpringBoot中实现了生产者发送消息,然后消费者消费消息!!

相关推荐
sakiko_13 分钟前
Swift学习笔记34-MVC架构,SwiftUI与UIkit混编练习
笔记·学习·swiftui·mvc·swift
汤米粥26 分钟前
python学习——核心语法三
java·python·学习
七老板的blog1 小时前
从持久化任务到多 Agent 协作
python·学习·ai
book01211 小时前
华为ensp学习日志 记2026
学习·华为·智能路由器
Huangxy__1 小时前
线程池的学习
学习
小丶舟1 小时前
6GB显卡跑Hermes Agent!开源AI自学习编程Agent实测
人工智能·学习·开源
Bechamz1 小时前
大数据开发学习Day45
大数据·学习
吃好睡好便好2 小时前
说说如何爱护肠道
学习·生活
CoreTK_EMC2 小时前
牙科医疗器械 ESD 静电整改案例|芯通康医疗级方案,护航诊疗安全与合规
网络·学习·emc整改·芯通康
南浦别a2 小时前
第一百一十三天--慢慢改变吧
学习·程序人生