RabbitMQ是目前很是熱門的一款消息中間件,無論是互聯網大廠仍是中小企業都在大量使用。Spring Boot的興起,極大地簡化了Spring的開發,本文將使用Spring Boot與RabbitMQ進行簡單整合,實現生產和消費消息。java
Spring Boot使用了這麼久,套路差很少摸清楚了。Spring Boot與其餘組件進行整合,無非就是加入pom依賴,接着配置一些基本信息,而後就可使用相關注解進行開發了。git
RabbitMQ也是相同的套路,第一步要引入依賴。要引入的依賴比較容易記,RabbitMQ實現了AMQP協議,引入依賴spring-boot-starter-amqp
。github
<!-- rabbitmq依賴 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency>
第二步要配置RabbitMQ鏈接信息,包括主機、端口號、用戶名和密碼。RabbitMQ配置信息:spring
spring.rabbitmq.host=192.168.16.128 spring.rabbitmq.port=5672 spring.rabbitmq.username=guest spring.rabbitmq.password=guest
若是沒有安裝RabbitMQ,我推薦使用Docker快速安裝和啓動,啓動命令:docker
docker run -d --hostname my-rabbit -p 5672:5672 -p 15672:15672 rabbitmq:3.8.0-beta.4-management
第三步實現生產和消費者。異步
生產者用來生產消息並進行發送。須要用到RabbitTemplate
。RabbitTemplate
是發送消息的關鍵類,convertAndSend
方法能夠指定消息發送的交換器、路由鍵、消息內容等。spring-boot
@Component public class Producer { @Autowired RabbitTemplate rabbitTemplate; public void produce() { String message = new Date() + "Beijing"; System.out.println("生產者生產消息=====" + message); rabbitTemplate.convertAndSend("rabbitmq_queue", message); } }
消費者消費生產者發送的消息。實現消費者主要用到註解@RabbitListener
。@RabbitListener
是一個功能強大的註解。這個註解裏面能夠註解配置@QueueBinding、@Queue、@Exchange直接經過這個組合註解一次性搞定多個交換機、綁定、路由、而且配置監聽功能等。測試
@RabbitListener(queues = "rabbitmq_queue")
@RabbitListener(queuesToDeclare = @Queue("myQueue"))
@RabbitListener(bindings = @QueueBinding(value = @Queue("myQueue"), key = "mobi", exchange = @Exchange("myExchange")))
本文使用@RabbitListener自動建立一個隊列。spa
@Component public class Consumer { @RabbitHandler @RabbitListener(queuesToDeclare = @Queue("rabbitmq_queue")) public void process(String message) { System.out.println("消費者消費消息=====" + message); } }
第四步測試。爲了方便,寫一個測試類生產消息。而後啓動工程,運行測試類,使生產者發送消息,不出意外消費者將會消費消息,在控制檯輸出信息。code
@RunWith(SpringRunner.class) @SpringBootTest public class ApplicationTests { @Autowired Producer producer; @Test public void contextLoads() { producer.produce(); } }
操做以後能夠在測試控制檯看到生產者消息發送成功,在該工程的控制檯看到消息消費成功。
訪問RabbitMQ控制面板也會看到有消息。
Spring Boot極大的簡化各類組件的使用,在實際應用中,當一個服務處理完成以後能夠將消息放進RabbitMQ消息隊列,另一個服務從隊列中取消息進行消費,這樣能夠下降服務之間的耦合,實現一些異步的操做。本文僅做爲一個簡單demo供參考。