项目集成RabbitMQ

news/2025/1/23 7:42:44/

文章目录

    • 1.common-rabbitmq-starter
        • 1.创建common-rabbitmq-starter
        • 2.pom.xml
        • 3.自动配置
          • 1.RabbitMQAutoConfiguration.java
          • 2.spring.factories
    • 2.测试使用
        • 1.创建common-rabbitmq-starter-demo
        • 2.目录结构
        • 3.pom.xml
        • 4.application.yml
        • 5.TestConfig.java 配置交换机和队列
        • 6.TestConfigConsumer.java 监听队列
        • 7.TestConfigPublisher.java 发布消息
        • 8.结果

rabbitmqstarter_2">1.common-rabbitmq-starter

rabbitmqstarter_4">1.创建common-rabbitmq-starter

CleanShot 2024-12-31 at 18.38.04@2x

2.pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>com.sunxiansheng</groupId><artifactId>sunrays-common</artifactId><version>1.0.5</version></parent><version>1.0.5</version><artifactId>common-rabbitmq-starter</artifactId><dependencies><!-- 工具包 --><dependency><groupId>com.sunxiansheng</groupId><artifactId>common-tool-starter</artifactId><version>1.0.5</version></dependency><!--AMQP依赖,包含RabbitMQ--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId></dependency></dependencies></project>
3.自动配置
1.RabbitMQAutoConfiguration.java
package com.sunxiansheng.rabbitmq.config;import org.springframework.context.annotation.Configuration;/*** Description: RabbitMQ自动配置类** @Author sun* @Create 2024/12/31 18:44* @Version 1.0*/
@Configuration
public class RabbitMQAutoConfiguration {
}
2.spring.factories
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.sunxiansheng.rabbitmq.config.RabbitMQAutoConfiguration

2.测试使用

rabbitmqstarterdemo_73">1.创建common-rabbitmq-starter-demo

CleanShot 2024-12-31 at 18.48.22@2x

2.目录结构

CleanShot 2024-12-31 at 19.13.13@2x

3.pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>com.sunxiansheng</groupId><artifactId>sunrays-demo</artifactId><version>1.0.5</version></parent><artifactId>common-rabbitmq-starter-demo</artifactId><dependencies><dependency><groupId>com.sunxiansheng</groupId><artifactId>common-rabbitmq-starter</artifactId><version>1.0.5</version></dependency><!-- 引入springboot-web模块 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><!-- 排除logging,防止日志冲突 --><exclusions><exclusion><artifactId>spring-boot-starter-logging</artifactId><groupId>org.springframework.boot</groupId></exclusion></exclusions></dependency><!-- 引入自己的日志 --><dependency><groupId>com.sunxiansheng</groupId><artifactId>common-log4j2-starter</artifactId><version>1.0.5</version></dependency><!-- spring-boot-starter-test --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><!-- 排除spring-boot-starter-logging,防止跟log4j2冲突 --><exclusions><exclusion><artifactId>spring-boot-starter-logging</artifactId><groupId>org.springframework.boot</groupId></exclusion></exclusions></dependency></dependencies>
</project>
4.application.yml
spring:# RabbitMQ 配置rabbitmq:# 服务器地址host: ip# 用户名username: guest# 密码password: guest# 虚拟主机virtual-host: /# 端口port: 6783
log:home: /Users/sunxiansheng/IdeaProjects/sunrays-framework/sunrays-demo/common-rabbitmq-starter-demomodule: common-rabbitmq-starter-demo
5.TestConfig.java 配置交换机和队列
package com.sunxiansheng.rabbitmq.config;import org.springframework.amqp.core.Binding;
import org.springframework.amqp.core.BindingBuilder;
import org.springframework.amqp.core.FanoutExchange;
import org.springframework.amqp.core.Queue;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;/*** Description: 测试配置类** @Author sun* @Create 2024/12/31 19:00* @Version 1.0*/
@Configuration
public class TestConfig {/*** 创建一个fanout类型的交换机* @return*/@Beanpublic FanoutExchange fanoutExchange() {return new FanoutExchange("fanout.exchange.test");}/*** 创建一个队列* @return*/@Beanpublic Queue fanoutQueueTest() {return new Queue("fanout.queue.test");}/*** 交换机和队列绑定*/@Beanpublic Binding binding() {return BindingBuilder.bind(fanoutQueueTest()).to(fanoutExchange());}
}
6.TestConfigConsumer.java 监听队列
package com.sunxiansheng.rabbitmq.consumer;import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;/*** Description: 测试消费者** @Author sun* @Create 2024/12/31 19:03* @Version 1.0*/
@Component
@Slf4j
public class TestConfigConsumer {@RabbitListener(queues = "fanout.queue.test")public void receive(String message) {log.info("接收到的消息:{}", message);}
}
7.TestConfigPublisher.java 发布消息
package com.sunxiansheng.rabbitmq.publisher;import org.junit.jupiter.api.Test;
import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.boot.test.context.SpringBootTest;import javax.annotation.Resource;/*** Description: 测试发布者** @Author sun* @Create 2024/12/31 19:05* @Version 1.0*/
@SpringBootTest
public class TestConfigPublisher {@Resourceprivate AmqpTemplate amqpTemplate;@Testpublic void send() {amqpTemplate.convertAndSend("fanout.exchange.test", "", "hello rabbitmq");}
}
8.结果

CleanShot 2024-12-31 at 19.15.06@2x


http://www.ppmy.cn/news/1565435.html

相关文章

GS论文阅读--Hard Gaussian Splatting

前言 本文也是对高斯点云的分布进行优化的&#xff0c;看&#xff01; 文章目录 前言1.背景介绍2.关键内容2.1 位置梯度驱动HGS2.2 渲染误差引导HGS 3.文章贡献 1.背景介绍 在训练过程中&#xff0c;它严重依赖于视图空间位置梯度的平均幅度来增长高斯以减少渲染损失。然而&…

如何使用 reduce() 方法对数组进行聚合计算?

数组聚合计算&#xff1a;如何使用 reduce() 方法进行数组遍历和聚合&#xff1f; 在 JavaScript 中&#xff0c;reduce() 方法是数组遍历和聚合计算中非常强大的工具。它通过遍历数组中的所有元素&#xff0c;将数组中的每个元素逐步汇总成一个单一的输出值&#xff08;如数值…

Flink 的核心特点和概念

Flink 是一个流式处理框架&#xff0c;专注于高吞吐量、低延迟的数据流处理。它能处理无限流&#xff08;即实时数据流&#xff09;和有限流&#xff08;批处理&#xff09;&#xff0c;具有很强的灵活性和可扩展性&#xff0c;广泛应用于实时数据分析、监控系统、数据处理平台…

西门子【Library of General Functions (LGF) for SIMATIC S7-1200 / S7-1500】

文章目录 概要整体架构流程技术名词解释技术细节小结 概要 通用函数库 (LGF) 扩展了 TIA Portal 中用于 PLC 编程的 STEP 7 指令&#xff08;数学函数、时间、计数器 等&#xff09;。该库可以不受限制地使用&#xff0c;并包含 FIFO 、搜索功能、矩阵计算、 astro 计…

Logo语言的网络编程

Logo语言的网络编程探讨 引言 Logo语言是上世纪60年代由西摩帕佩特(Seymour Papert)和他的团队开发的一种编程语言。Logo最初是为了帮助儿童理解编程和计算机科学的概念而设计的。它以图形化的方式呈现编程思想&#xff0c;通过控制“海龟”进行图形绘制&#xff0c;帮助学生…

STM32 GPIO工作模式

GPIO工作模式 1. GPIO简介2. GPIO工作模式2.1 输入浮空2.2 输入上拉2.3 输入下拉2.4 模拟2.5 开漏输出2.6 推挽输出2.7 开漏式复用功能2.8 推挽式复用功能 1. GPIO简介 GPIO 是通用输入输出端口的简称&#xff0c;简单来说就是 STM32 可控制的引脚&#xff0c;STM32 芯片的 GPI…

Mellanox ConnectX HCA InfiniBand 驱动分析:drivers/infiniband/hw/mlx4/main.c

引言 Mellanox ConnectX 系列适配器是高性能计算和数据中心网络中的关键组件,支持 InfiniBand 和以太网协议。drivers/infiniband/hw/mlx4/main.c 是 Linux 内核中 Mellanox ConnectX 系列 InfiniBand 设备驱动程序的核心文件之一,负责初始化和管理 Mellanox ConnectX HCA(…

Python自动化运维:一键掌控服务器的高效之道

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 在互联网和云计算高速发展的今天,服务器数量的指数增长使得手动运维和管理变得异常繁琐。Python凭借其强大的可读性和丰富的生态系统,成为…