激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 詳解Spring Boot 配置多個RabbitMQ

詳解Spring Boot 配置多個RabbitMQ

2020-11-23 13:031CSH1 Java教程

本篇文章主要介紹了Spring Boot 配置多個RabbitMQ,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

閑話

好久沒有寫博客了,6月份畢業,因為工作原因,公司上網受限,一直沒能把學到的知識點寫下來,工作了半年,其實學到的東西也不少,但是現在回憶起來的東西少之又少,有時甚至能在同個問題中踩了幾次,越來越覺得及時記錄一下學到的東西很重要。

好了,閑話少說,寫下這段時間學習的東西,先記錄一下用spring Boot配置多個RabbitMQ的情況。。。

最近公司新啟動一個新平臺的項目,需要用微服務這個這幾年很火的概念來做,所以就學習了Spring Boot方面的知識,給同事展示Spring Boot的一些小事例的時候,同事提出了可不可以配置多個RabbitMQ?下面就是在Spring Boot配置多個RabbitMQ的例子。是自己摸索搭建的,也不知道對不對,有其他好的實現方法的網友可以互相交流一下。

項目代碼構造

詳解Spring Boot 配置多個RabbitMQ

關注點在紅框的代碼。。。

代碼

下面就把項目的代碼展示下來

application.properties

配置文件

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
spring.application.name=rabbitmq-hello
 
# RabbitMQ
spring.rabbitmq.first.host=node9
spring.rabbitmq.first.port=5670
spring.rabbitmq.first.username=guest
spring.rabbitmq.first.password=guest
 
spring.rabbitmq.second.host=localhost
spring.rabbitmq.second.port=5672
spring.rabbitmq.second.username=guest
spring.rabbitmq.second.password=guest
 
 
# MySQL
spring.datasource.url = jdbc:mysql://localhost:3306/cloudtest
spring.datasource.username = root
spring.datasource.password = root
spring.datasource.driverClassName = com.mysql.jdbc.Driver

HelloApplication.java

程序入口

?
1
2
3
4
5
6
7
8
9
10
11
12
13
package com.paas.springboot.demo01;
 
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
 
@SpringBootApplication
public class HelloApplication {
 
 public static void main(String[] args) {
  SpringApplication.run(HelloApplication.class, args);
 }
 
}

RabbitConfig.java

RabbitMQ配置類

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
package com.paas.springboot.demo01;
 
import org.springframework.amqp.core.Queue;
import org.springframework.amqp.rabbit.config.SimpleRabbitListenerContainerFactory;
import org.springframework.amqp.rabbit.connection.CachingConnectionFactory;
import org.springframework.amqp.rabbit.connection.ConnectionFactory;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.amqp.SimpleRabbitListenerContainerFactoryConfigurer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
 
@Configuration
public class RabbitConfig {
 
 @Bean(name="firstConnectionFactory")
 @Primary
 public ConnectionFactory firstConnectionFactory(
           @Value("${spring.rabbitmq.first.host}") String host,
           @Value("${spring.rabbitmq.first.port}") int port,
           @Value("${spring.rabbitmq.first.username}") String username,
           @Value("${spring.rabbitmq.first.password}") String password
           ){
  CachingConnectionFactory connectionFactory = new CachingConnectionFactory();
  connectionFactory.setHost(host);
  connectionFactory.setPort(port);
  connectionFactory.setUsername(username);
  connectionFactory.setPassword(password);
  return connectionFactory;
 }
 
 @Bean(name="secondConnectionFactory")
 public ConnectionFactory secondConnectionFactory(
           @Value("${spring.rabbitmq.second.host}") String host,
           @Value("${spring.rabbitmq.second.port}") int port,
           @Value("${spring.rabbitmq.second.username}") String username,
           @Value("${spring.rabbitmq.second.password}") String password
           ){
  CachingConnectionFactory connectionFactory = new CachingConnectionFactory();
  connectionFactory.setHost(host);
  connectionFactory.setPort(port);
  connectionFactory.setUsername(username);
  connectionFactory.setPassword(password);
  return connectionFactory;
 }
 
 @Bean(name="firstRabbitTemplate")
 @Primary
 public RabbitTemplate firstRabbitTemplate(
           @Qualifier("firstConnectionFactory") ConnectionFactory connectionFactory
           ){
  RabbitTemplate firstRabbitTemplate = new RabbitTemplate(connectionFactory);
  return firstRabbitTemplate;
 }
 
 @Bean(name="secondRabbitTemplate")
 public RabbitTemplate secondRabbitTemplate(
           @Qualifier("secondConnectionFactory") ConnectionFactory connectionFactory
           ){
  RabbitTemplate secondRabbitTemplate = new RabbitTemplate(connectionFactory);
  return secondRabbitTemplate;
 }
 
 @Bean(name="firstFactory")
 public SimpleRabbitListenerContainerFactory firstFactory(
              SimpleRabbitListenerContainerFactoryConfigurer configurer,
              @Qualifier("firstConnectionFactory") ConnectionFactory connectionFactory 
              ) {
  SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
  configurer.configure(factory, connectionFactory);
  return factory;
 }
 
 @Bean(name="secondFactory")
 public SimpleRabbitListenerContainerFactory secondFactory(
              SimpleRabbitListenerContainerFactoryConfigurer configurer,
              @Qualifier("secondConnectionFactory") ConnectionFactory connectionFactory  
              ) {
  SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
  configurer.configure(factory, connectionFactory);
  return factory;
 }
 
 @Bean
 public Queue firstQueue() {
  System.out.println("configuration firstQueue ........................");
  return new Queue("hello1");
 }
 
 @Bean
 public Object secondQueue() {
  System.out.println("configuration secondQueue ........................");
  return new Queue("hello2");
 }
}

Receiver.java

RabbitMQ中的消費者,接收first RabbitMQ中的隊列hello1的數據

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package com.paas.springboot.demo01;
 
import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
 
@Component
@RabbitListener(queues = "hello1", containerFactory="firstFactory")
public class Receiver {
 
 @RabbitHandler
 public void process(String hello) {
  System.out.println("Receiver : " + hello);
 }
 
}

Receiver2.java

RabbitMQ中的消費者,接收second RabbitMQ中的隊列hello2的數據

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package com.paas.springboot.demo01;
 
import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
 
@Component
@RabbitListener(queues = "hello2", containerFactory="secondFactory" )
public class Receiver2 {
 
 @RabbitHandler
 public void process(String hello) {
  System.out.println("Receiver : " + hello);
 }
 
}

Sender.java

RabbitMQ中的生產者,發送消息到first RabbitMQ中的隊列hello1和hello2

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
package com.paas.springboot.demo01;
 
import java.util.Date;
import javax.annotation.Resource;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.stereotype.Component;
 
@Component
public class Sender {
 
 @Resource(name="firstRabbitTemplate")
 private RabbitTemplate firstRabbitTemplate;
 
 public void send1() {
  String context = "hello1 " + new Date();
  System.out.println("Sender : " + context);
  this.firstRabbitTemplate.convertAndSend("hello1", context);
 }
 
 public void send2() {
  String context = "hello2 " + new Date();
  System.out.println("Sender : " + context);
  this.firstRabbitTemplate.convertAndSend("hello2", context);
 }
 
}

Sender2.java

RabbitMQ中的生產者,發送消息到second RabbitMQ中的隊列hello1和hello2

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
package com.paas.springboot.demo01;
 
import java.util.Date;
import javax.annotation.Resource;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.stereotype.Component;
 
@Component
public class Sender {
 
 @Resource(name="firstRabbitTemplate")
 private RabbitTemplate firstRabbitTemplate;
 
 public void send1() {
  String context = "hello1 " + new Date();
  System.out.println("Sender : " + context);
  this.firstRabbitTemplate.convertAndSend("hello1", context);
 }
 
 public void send2() {
  String context = "hello2 " + new Date();
  System.out.println("Sender : " + context);
  this.firstRabbitTemplate.convertAndSend("hello2", context);
 }
 
}

TestDemo01.java

測試類,調用Sender發送消息

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
package com.paas.springboot.demo01;
 
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.SpringApplicationConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
 
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = HelloApplication.class)
public class TestDemo01 {
 
 @Autowired
 private Sender sender;
 
 @Autowired
 private Sender2 sender2;
 
 @Test
 public void hello() throws Exception {
  sender.send1();
  sender.send2();
 }
 
 @Test
 public void hello2() throws Exception {
  sender2.send1();
  sender2.send2();
 }
}

pom.xml

Maven項目中最重要的一個配置文件

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
<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/maven-v4_0_0.xsd">
 <modelVersion>4.0.0</modelVersion>
 <groupId>com.paas.springboot.demo</groupId>
 <artifactId>springboot</artifactId>
 <packaging>war</packaging>
 <version>0.0.1-SNAPSHOT</version>
 <name>springboot Maven Webapp</name>
 <url>http://maven.apache.org</url>
 
 <parent>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-parent</artifactId>
  <version>1.4.3.RELEASE</version>
  <relativePath /> <!-- lookup parent from repository -->
 </parent>
 
 <dependencies>
  <dependency>
   <groupId>junit</groupId>
   <artifactId>junit</artifactId>
   <scope>test</scope>
  </dependency>
  <dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-amqp</artifactId>
  </dependency>
  <dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-actuator</artifactId>
  </dependency>
   <dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-web</artifactId>
  </dependency>
  <dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-jdbc</artifactId>
  </dependency>
  <dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-test</artifactId>
   <scope>test</scope>
  </dependency>
  <dependency>
   <groupId>com.jayway.jsonpath</groupId>
   <artifactId>json-path</artifactId>
   <scope>test</scope>
  </dependency>
  <dependency>
   <groupId>mysql</groupId>
   <artifactId>mysql-connector-java</artifactId>
  </dependency>
 </dependencies>
 
 <build>
  <finalName>springboot</finalName>
  <plugins>
   <plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
   </plugin>
  </plugins>
 </build>
 
 <repositories>
  <repository>
   <id>spring-releases</id>
   <url>https://repo.spring.io/libs-release</url>
  </repository>
 </repositories>
 <pluginRepositories>
  <pluginRepository>
   <id>spring-releases</id>
   <url>https://repo.spring.io/libs-release</url>
  </pluginRepository>
 </pluginRepositories>
 
</project>

運行&測試

通過運行HelloApplication.Java,將程序中的Receiver啟動一直監控著隊列,然后通過運行TestDemo01.java中的測試案例,發送消息到隊列中,這時可以發現運行HelloApplication的程序控制臺將剛剛發送的消息打印出來

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://1csh1.github.io/2017/01/19/Spring%20Boot%20%E9%85%8D%E7%BD%AE%E5%A4%9A%E4%B8%AARabbitMQ/

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25
主站蜘蛛池模板: 97中文字幕第一一一页 | 成人免费看片a | 九九久久视频 | 96视频在线免费观看 | 久久精品视频首页 | 蜜桃视频在线免费观看 | 九九视频久久 | 日韩在线观看视频一区二区三区 | 日韩美女电影 | 狠狠久久伊人中文字幕 | 国产一区二区三区在线免费 | 久久精品亚洲一区二区 | av在线观| 日韩精品中文字幕在线观看 | 国产精品视频一区二区三区综合 | 欧美毛片 | 久久福利精品 | 日本在线播放一区二区三区 | www.狠狠操.com | 2017亚洲男人天堂 | 毛片在线视频免费观看 | 国产精品刺激对白麻豆99 | 久久免费精品 | 美女被免费网站在线软件 | 视频一区二区中文字幕 | 午夜国产在线观看 | 精品国产一区二区三区天美传媒 | 日本精品中文字幕 | 一级免费大片 | 最新黄色电影网站 | 黄色毛片免费视频 | 精品国产乱码久久久久久久久 | 久久欧美亚洲另类专区91大神 | www.48xx.com| 欧美一区二区三区免费电影 | 91精品免费在线 | 午夜亚洲影院 | 中国女警察一级毛片视频 | 一区二区三区四区精品 | 免费a级毛片大学生免费观看 | 精品999www|