Spring Boot之IntelliJ IDEA RabbitMQ
阿新 • • 發佈:2022-01-13
問題描述
在使用spring boot中使用spring-boot-starter-amqp
處理RabbitMQ操作時,使用以下程式碼建立DirectExchange
@Bean("directExchange")
public DirectExchange directExchange() {
return new DirectExchange("test", true, false);
}
- 目的:當服務啟動時自動建立相應
DirectExchange
- 結果:本地使用IntelliJ IDEA啟動服務可以建立,使用
maven package
打包後,用java -jar
啟動服務後,沒有建立
原因分析
相關依賴
去掉spring-boot-starter-actuator
依賴後就都無法建立
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
IntelliJ IDEA 文件
具體說明:https://www.jetbrains.com/help/idea/spring-boot.html#spring-boot-endpoints
Spring Boot文件
具體說明: https://docs.spring.io/spring-boot/docs/current/reference/html/actuator.html
結論
因為Spring Boot actuator預設暴露JMX所有節點,IntelliJ IDEA啟動預設開啟JMX,而用命令java -jar
預設不會開啟JMX.這樣在IntelliJ IDEA啟動Spring Boot 後,觸發了org.springframework.boot.actuate.health.HealthEndpoint
從而使用了預設的org.springframework.amqp.rabbit.connection.CachingConnectionFactory#createConnection
DirectExchange
記錄技術成長之路