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中实现了生产者发送消息,然后消费者消费消息!!

相关推荐
朝九晚五ฺ26 分钟前
【Linux探索学习】第二十五弹——动静态库:Linux 中静态库与动态库的详细解析
linux·运维·学习
geniuscrh1 小时前
selenium学习笔记
笔记·学习·selenium
Waitfor_Me2 小时前
RabbitMQ介绍与使用
java·rabbitmq
CJenny2 小时前
LangChain 学习笔记
笔记·学习·langchain
博雅智信2 小时前
人工智能计算机视觉学习路线——从基础到深度探索
人工智能·python·学习·计算机视觉·计算机视觉学习路线·申博
扶离_flee2 小时前
麦田物语学习笔记:创建DragItem实现物品的拖拽跟随显示
笔记·学习
橘子味的茶二3 小时前
opencv 学习(3)
人工智能·opencv·学习
一棵开花的树,枝芽无限靠近你3 小时前
【PPTist】公式编辑、插入音视频、添加动画
前端·笔记·学习·编辑器·ppt·pptist
bloxed3 小时前
Vite源码学习分享(一)
学习
cd小白4 小时前
Linux第二课:LinuxC高级 学习记录day01
linux·c语言·开发语言·学习