文章目录
- 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
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>
<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;
@Configuration
public class RabbitMQAutoConfiguration {
}
2.spring.factories
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.sunxiansheng.rabbitmq.config.RabbitMQAutoConfiguration
2.测试使用
1.创建common-rabbitmq-starter-demo
2.目录结构
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>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<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>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<exclusions>
<exclusion>
<artifactId>spring-boot-starter-logging</artifactId>
<groupId>org.springframework.boot</groupId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
</project>
4.application.yml
spring:
rabbitmq:
host: ip
username: guest
password: guest
virtual-host: /
port: 6783
log:
home: /Users/sunxiansheng/IdeaProjects/sunrays-framework/sunrays-demo/common-rabbitmq-starter-demo
module: 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;
@Configuration
public class TestConfig {
@Bean
public FanoutExchange fanoutExchange() {
return new FanoutExchange("fanout.exchange.test");
}
@Bean
public Queue fanoutQueueTest() {
return new Queue("fanout.queue.test");
}
@Bean
public 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;
@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;
@SpringBootTest
public class TestConfigPublisher {
@Resource
private AmqpTemplate amqpTemplate;
@Test
public void send() {
amqpTemplate.convertAndSend("fanout.exchange.test", "", "hello rabbitmq");
}
}
8.结果