SpringBoot整合RabbitMQ

SpringBoot整合RabbitMQ

文章目录

RabbitMQ下载与安装




SpringBoot整合RabbitMQ(直连交换机模式)

导坐标

java 复制代码
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-amqp</artifactId>
        </dependency>

改配置

java 复制代码
spring:
  rabbitmq:
    host: localhost
    port: 5672

定义消息队列

这里注意Queue的导包的时候,导的包一定要是

amop.core下的包。

java 复制代码
import org.springframework.amqp.core.Queue;

消息队列和交换机做绑定的操作

同一个交换机是可以复用的

java 复制代码
@Configuration
public class RabbitConfigDirect {

    @Bean
    public Queue directQueue(){
        return new Queue("dirct_queue");
    }

    @Bean
    public Queue directQueue2(){
        return new Queue("dirct_queue2");
    }

    @Bean
    public DirectExchange directExchange(){
        return new DirectExchange("directExchange");
    }

    @Bean
    public Binding bindingDirect(){
        return BindingBuilder
                .bind(directQueue())
                .to(directExchange())
                .with("direct");
    }

    @Bean
    public Binding bindingDirect2(){
        return BindingBuilder
                .bind(directQueue2())
                .to(directExchange())
                .with("direct2");
    }
}

生产消息

java 复制代码
@Service
public class MessageServiceRabbitmqDirectImpl implements MessageService {

    @Autowired
    private AmqpTemplate amqpTemplate;

    @Override
    public void sendMessage(String id) {
        System.out.println("待发送短信的订单已纳入处理队列 (rabbitmq direct),id:" + id);
        amqpTemplate.convertAndSend("directExchange","direct",id);

    }
}

消费消息------Listener

多个监听配上同一个消息队列,可以轮询消费消息

java 复制代码
@Component
public class MessageListener {

    @RabbitListener(queues = "dirct_queue")
    public void receive(String id){
        System.out.println("已完成短信发送业务(rabbitmq direct):id:" + id);
    }
}
java 复制代码
@Component
public class MessageListener2 {

    @RabbitListener(queues = "dirct_queue")
    public void receive(String id){
        System.out.println("已完成短信发送业务(rabbitmq direct two):id:" + id);
    }
}

SpringBoot整合RabbitMQ(主题交换机模式)

代码几乎没区别,但是代码模式有区别

使用主题交换机可以实现直连交换机

绑定匹配规则发生了一些变化

java 复制代码
@Service
public class MessageServiceRabbitmqTopicImpl implements MessageService {

    @Autowired
    private AmqpTemplate amqpTemplate;

    @Override
    public void sendMessage(String id) {
        System.out.println("待发送短信的订单已纳入处理队列 (rabbitmq topic),id:" + id);
        amqpTemplate.convertAndSend("topicExchange","topic.*.id",id);
    }

    @Override
    public String doMessage() {
        return null;
    }
}

交换机的代码几乎不用发生变化,只需要把直连交换机换成主题交换机

java 复制代码
@Configuration
public class RabbitConfigTopic {

    @Bean
    public Queue topicQueue(){
        return new Queue("topic_queue");
    }

    @Bean
    public Queue topicQueue2(){
        return new Queue("topic_queue2");
    }

    @Bean
    public TopicExchange topicExchange(){
        return new TopicExchange("topicExchange");
    }

    @Bean
    public Binding bindingTopic(){
        return BindingBuilder
                .bind(topicQueue())
                .to(topicExchange())
                .with("topic.order.id");
    }

    @Bean
    public Binding bindingTopic2(){
        return BindingBuilder
                .bind(topicQueue2())
                .to(topicExchange())
                .with("topic2");
    }
}
相关推荐
她的男孩40 分钟前
租户 A 的验证码,却用了租户 B 的 AccessKey:Forge Admin 修跨租户短信串发
java·spring boot·saas
小蒜学长1 小时前
基于SpringBoot+Vue的云南地区扶贫助农系统的设计与实现(代码+数据库+LW)
java·vue.js·spring boot·后端·乡村振兴
RuoyiOffice1 小时前
Hyper-V+Kubernetes 搭建实战:保留 Windows,构建三节点 Linux 容器集群
linux·spring boot·kubernetes·containerd·hyper-v·微服务部署·ruoyi office
骑着蜗牛撵大象3271 小时前
Spring Boot 4.1 + Spring AI 2.0:RAG 供文、图谱供关系、MCP 供工具的 Java Agent 平台
java·spring boot·spring·微服务·知识图谱·rag·mcp
java_nnnn1 小时前
Spring Boot 配置文件详解:从基础语法到 YAML 配置
spring boot·后端·github
CoderYanger2 小时前
Java EE 进阶:6.SpringBoot 配置文件(第二弹)
java·spring boot·spring·面试·职场和发展·java-ee·程序员创富
code_slave(码畜)2 小时前
微服务架构落地:慢 SQL 治理与连接池调优 —— 守住数据库的最后一道防线
数据库·spring boot·sql·spring cloud·微服务·架构
m0_639906942 小时前
SpringBoot 实现大模型统一调度网关|对接 OpenAI、Claude 协议差异与适配方案
java·spring boot·spring
顧棟2 小时前
OpenAPI 网关:鉴权 + 流量治理 一体化设计方案与实现
java·spring boot·设计模式
真上帝的左手3 小时前
2. 编程语言-Java-Spring Boot-JAR
java·spring boot·jar