1. 程式人生 > >spring boot實戰(第十四篇)整合RabbitMQ原始碼分析前言

spring boot實戰(第十四篇)整合RabbitMQ原始碼分析前言

public void afterPropertiesSet() {

		synchronized (this.lifecycleMonitor) {

			if (this.running || !this.autoStartup) {
				return;
			}

			if (this.connectionFactory instanceof CachingConnectionFactory &&
					((CachingConnectionFactory) this.connectionFactory).getCacheMode() == CacheMode.CONNECTION) {
				logger.warn("RabbitAdmin auto declaration is not supported with CacheMode.CONNECTION");
				return;
			}

			this.connectionFactory.addConnectionListener(new ConnectionListener() {

				// Prevent stack overflow...
				private final AtomicBoolean initializing = new AtomicBoolean(false);

				@Override
				public void onCreate(Connection connection) {
					if (!initializing.compareAndSet(false, true)) {
						// If we are already initializing, we don't need to do it again...
						return;
					}
					try {
						 
						initialize();
					}
					finally {
						initializing.compareAndSet(true, false);
					}
				}

				@Override
				public void onClose(Connection connection) {
				}

			});

			this.running = true;

		}
	}

synchronized (this.lifecycleMonitor)加鎖保證同一時間只有一個執行緒訪問該程式碼,隨後呼叫this.connectionFactory.addConnectionListener新增連線監聽,各連線工廠關係:

相關推薦

spring boot實戰()整合RabbitMQ原始碼分析前言

public void afterPropertiesSet() { synchronized (this.lifecycleMonitor) { if (this.running || !this.autoStartup) { return; } if (this.con

spring boot實戰()整合RabbitMQ

this direct 還需要 添加屬性 創建 還需 topic start routing 前言 本篇主要講述Spring Boot與RabbitMQ的整合,內容非常簡單,純API的調用操作。 操作之間需要加入依賴Jar [html] view plain cop

spring boot實戰()初識RabbitMQ

package org.lkl.mq.rabbitmq.test; import java.io.IOException; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; import

spring boot實戰()Spring boot Bean載入原始碼分析

public static void invokeBeanFactoryPostProcessors( ConfigurableListableBeanFactory beanFactory, List<BeanFactoryPostProcessor> beanFactoryPostPro

spring-boot-route(整合Kafka

在上一章中[SpringBoot整合RabbitMQ](修改地址),已經詳細介紹了訊息佇列的作用,這一種我們直接來學習SpringBoot如何整合kafka傳送訊息。 ## kafka簡介 kafka是用Scala和Java語言開發的,高吞吐量的分散式訊息中介軟體。高吞吐量使它在大資料領域具有天然的優勢,

Spring Cloud實戰 | Spring Cloud Gateway 閘道器實現對RESTful介面許可權控制和按鈕許可權控制

## 一. 前言 hi,大家好,這應該是農曆年前的關於開源專案[有來商城](https://github.com/hxrui) 的最後一篇文章了。 [有來商城](https://github.com/hxrui) 是基於 Spring Cloud OAuth2 + Spring Cloud Gateway

Spring Cloud實戰 | Spring Cloud Gateway閘道器實現對RESTful介面許可權和按鈕許可權細粒度控制

## 一. 前言 hi,大家好,這應該是農曆年前的關於開源專案[有來商城](https://github.com/hxrui) 的最後一篇文章了。 [有來商城](https://github.com/hxrui) 是基於 Spring Cloud OAuth2 + Spring Cloud Gateway

Spring Cloud系列教程 | Spring Cloud與Kubernetes的整合

推薦 Spring Cloud 視訊: Spring Cloud與Kubernetes的整合      Spring Cloud提供了專門的spring-cloud-kubernetes專案與k8s整合,儘管k8s提供了服務註冊和發現等功能與Spring cl

Spring Boot+MyBatis配置多資料來源

說起多資料來源,一般都來用來解決主從模式或者業務比較複雜需要連線不同的分庫來支援業務。本篇文章主要講解後者的模式,利用AOP動態切換來達到專案訪問不同資料來源。 構架工程 建立一個springboot工程,在其pom檔案加入: <dependency> &

: Spring Boot使用校驗框架validation校驗

Spring Boot在內部通過整合hibernate-validation已經實現了JSR-349驗證規範介面,在Spring Boot專案中只要直接使用就行了。一般用在Controller中用於驗證前端傳來的引數。驗證分兩種:對封裝的Bean進行驗證  或者  對方法簡單

Spring Cloud實戰 | Spring Cloud + Seata 1.4.1 + Nacos1.4.0 整合實現微服務架構中逃不掉的話題分散式事務

Seata分散式事務線上體驗地址: [www.youlai.store](http://www.youlai.store) ![](https://i.loli.net/2021/01/14/ACcKBaGte5s7Wy9.png) 本篇完整原始碼地址:https://github.com/hxrui/y

spring boot 開發—修改tomcat容器上下文根地址

1、上下文跟預設地址 預設情況下springboot中request.getServletContext().getRealPath 返回的是一個臨時資料夾的地址 2、檢視原始碼 通過檢視原始碼 位置在org.springframework.boot.co

React Native實戰系列——購物車

前言 最近一直在上課,公眾號後臺收到了不少學生和朋友的留言和提問。有關於技術的也有關於其他的,後面會整理出來統一回復和交流。留言主要內容是:希望能夠推出比較綜合的React-Native專案,Vue專案等等。 本系列大前端乾貨篇共6篇,都是基於現在公司專案開發中比較

Spring-boot教程()多模組專案遇到的整合問題

1、多模組專案只能在程式啟動所在的模組有application,所以對於多模組專案來說,必須解決各個模組的配置檔案能夠被專案正確讀取的問題。 這裡採用@Configuration手動配置各種第三方框架,如mysql、mybatis、redis.... 這裡採用@Prope

spring boot實戰()上下文的建立

public static Set<BeanDefinitionHolder> registerAnnotationConfigProcessors( BeanDefinitionRegistry registry, Object source) { DefaultListableBe

跟我學SpringCloud | Spring Cloud Gateway高階應用

SpringCloud系列教程 | 第十四篇:Spring Cloud Gateway高階應用 Springboot: 2.1.6.RELEASE SpringCloud: Greenwich.SR1 如無特殊說明,本系列教程全採用以上版本 上一篇我們聊了Gateway和註冊中心的使用,以及 Ga

Spring Cloud | Api閘道器Zuul

​ 本文是Spring Cloud專欄的第十四篇文章,瞭解前十三篇文章內容有助於更好的理解本文: Spring Cloud第一篇 | Spring Cloud前言及其常用元件介紹概覽 Spring Cloud第二篇 | 使用並認識Eureka註冊中心 Spring Cloud第三篇 | 搭建高可用

Python開發【】:Web框架本質

中一 用戶 contain get pattern app sta doc connect Web框架本質 眾所周知,對於所有的Web應用,本質上其實就是一個socket服務端,用戶的瀏覽器其實就是一個socket客戶端。 1 2 3 4 5 6 7 8 9

現象

幫助 產生 這也 人類 被人 規律 生命 快速 宇宙 第十四篇 現象 “現象”的產生是由宇宙當中各種因素交匯的結果。現象是萬物在宇宙中的展現,它可以被人為創造,也可以由宇宙規律自行產生。現象能幫助人類逐步地了解宇宙的本質,也能幫助人類更好地了解自己。 當一個生命對

Spring Boot實戰筆記()-- Spring常用配置(事件Application Event)

ans can string code text extends autowired dem plc 一、事件(Application Event)   Spring的事件為Bean和Bean之間的消息通信提供了支持。當一個Bean處理完一個任務之後,希望另一個Bean知道