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

相关推荐
Gary Studio1 小时前
rk芯片驱动编写
linux·学习
mango_mangojuice1 小时前
Linux学习笔记(make/Makefile)1.23
java·linux·前端·笔记·学习
lingggggaaaa1 小时前
安全工具篇&动态绕过&DumpLsass凭据&Certutil下载&变异替换&打乱源头特征
学习·安全·web安全·免杀对抗
PP东2 小时前
Flowable学习(二)——Flowable概念学习
java·后端·学习·flowable
学电子她就能回来吗2 小时前
深度学习速成:损失函数与反向传播
人工智能·深度学习·学习·计算机视觉·github
AI视觉网奇4 小时前
ue 角色驱动衣服 绑定衣服
笔记·学习·ue5
洛豳枭薰4 小时前
消息队列关键问题描述
kafka·rabbitmq·rocketmq
wdfk_prog5 小时前
[Linux]学习笔记系列 -- [drivers][input]serio
linux·笔记·学习
ZH15455891317 小时前
Flutter for OpenHarmony Python学习助手实战:GUI桌面应用开发的实现
python·学习·flutter
编程小白20267 小时前
从 C++ 基础到效率翻倍:Qt 开发环境搭建与Windows 神级快捷键指南
开发语言·c++·windows·qt·学习