当前位置: 首页 > news >正文

项目集成RabbitMQ

文章目录

    • 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.结果

1.common-rabbitmq-starter

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.测试使用

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.lryc.cn/news/527183.html

相关文章:

  • 3097. 或值至少为 K 的最短子数组 II
  • Linux 35.6 + JetPack v5.1.4之编译器升级
  • [MoeCTF 2022]ezhtml
  • 活动回顾和预告|微软开发者社区 Code Without Barriers 上海站首场活动成功举办!
  • 使用 Redis List 和 Pub/Sub 实现简单的消息队列
  • 本地项目上传到码云
  • Ansible入门学习之基础元素介绍
  • 大数据治理实战指南:数据质量、合规与治理架构
  • leetcode_链表 234.回文链表
  • [Dialog屏幕开发] 屏幕绘制(下拉菜单)
  • deepseek v1手机端部署
  • CVPR 2024 无人机/遥感/卫星图像方向总汇(航空图像和交叉视角定位)
  • 【信息系统项目管理师-选择真题】2015下半年综合知识答案和详解
  • Baklib如何结合内容中台与人工智能技术实现数字化转型
  • JAVAweb学习日记(八) 请数据库模型MySQL
  • 自动驾驶---苏箐对智驾产品的思考
  • python——Django 框架
  • 计算机视觉-卷积
  • Spring Boot 自定义属性
  • C++ list 容器用法
  • 《 C++ 点滴漫谈: 二十四 》深入 C++ 变量与类型的世界:高性能编程的根基
  • C语言初阶牛客网刷题—— HJ34 图片整理【难度:中等】
  • 小盒科技携手体验家,优化智能教育服务体验,打造在线教育新高度
  • 一个简单的自适应html5导航模板
  • HttpClient学习
  • 二级 二维数组3
  • 【PyTorch][chapter 29][李宏毅深度学习]Fine-tuning LLM
  • javascript-es6 (一)
  • 数据结构——二叉树——堆(1)
  • window保存好看的桌面壁纸