中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

SpringBoot | 第十二章:RabbitMQ 的集成和使用

2018-08-25    來源:importnew

容器云強勢上線!快速搭建集群,上萬Linux鏡像隨意使用

前言

上節(jié)講了緩存數(shù)據(jù)庫redis的使用,在實際工作中,一般上在系統(tǒng)或者應用間通信或者進行異步通知(登錄后發(fā)送短信或者郵件等)時,都會使用消息隊列進行解決此業(yè)務場景的解耦問題。這章節(jié)講解下消息隊列RabbitMQ的集成和簡單使用示例。

RabbitMQ介紹

RabbitMQ是一個開源的AMQP實現(xiàn),服務器端用Erlang語言編寫,支持多種客戶端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用于在分布式系統(tǒng)中存儲轉(zhuǎn)發(fā)消息,在易用性、擴展性、高可用性等方面表現(xiàn)不俗。

關(guān)于AMQP(摘自互聯(lián)網(wǎng)):

AMQP,即Advanced Message Queuing Protocol,高級消息隊列協(xié)議,是應用層協(xié)議的一個開放標準,為面向消息的中間件設計。消息中間件主要用于組件之間的解耦,消息的發(fā)送者無需知道消息使用者的存在,反之亦然。 AMQP的主要特征是面向消息、隊列、路由(包括點對點和發(fā)布/訂閱)、可靠性、安全。

題外話:其實Redis也有提供隊列功能。但我覺得,redis還是專門用在緩存方面吧。

SpringBoot集成RabbitMQ

0.老規(guī)矩,加入pom依賴,這已經(jīng)是Springboot的套路了。

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>

1.application.properties配置加入rabbitmq相關(guān)配置。

RabbitAutoConfiguration類是其自動加載配置類。

# rabbitmq相關(guān)配置
spring.rabbitmq.host=127.0.0.1
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest

2.關(guān)于配置,以上兩步就完成了(Springboot真的太方便了,寫代碼都是愉悅的)。正常使用時,若作為一個消費者,我們會配置一個接收隊列,這里為了示例,直接以最小配置來演示下。

配置一個名為okong的隊列?

@Configuration
public class RabbitConfig {
	
	/**
	 * 定義一個名為:oKong 的隊列
	 * @return
	 */
	@Bean
	public Queue okongQueue() {
		return new Queue("okong");
	}
}

配置隊列處理類,這里的隊列就是上面配置的隊列名稱。:
Consumer.java

@Component
//@RabbitListener 監(jiān)聽 okong 隊列
@RabbitListener(queues = "okong")
@Slf4j
public class Consumer {

	/**
	 * @RabbitHandler 指定消息的處理方法
	 * @param message
	 */
	@RabbitHandler
	public void process(String message) {
        log.info("接收的消息為: {}", message);
    }
}

編寫消息發(fā)送類,這里直接寫成api方法,方便調(diào)試。
DemoController.java

/**
 * 簡單示例 發(fā)送和接收隊列消息
 * @author oKong
 *
 */
@RestController
public class DemoController {
	
	//AmqpTemplate接口定義了發(fā)送和接收消息的基本操作,目前spring官方也只集成了Rabbitmq一個消息隊列。。
	@Autowired
	AmqpTemplate rabbitmqTemplate;
	
	@GetMapping("/send")
	public String send(String msg) {
		//發(fā)送消息
		rabbitmqTemplate.convertAndSend("okong", msg);
		return "消息:" + msg + ",已發(fā)送";
	}
}

3.啟動應用,正常配置成功,在Rabbitmq的控制臺,是可以看見連接對象的。說明已經(jīng)正常啟動了。

4.訪問:http://127.0.0.1:8080/send?msg=hello,rabbitmq, 在控制臺就可以看見消費者已經(jīng)消費到此條消息了:

2018-07-24 22:59:00.777  INFO 11424 --- [cTaskExecutor-1] c.l.l.springboot.chapter12.Consumer      : 接收的消息為: hello,rabbitmq

控制臺界面,在Queues標簽頁,也可以查看到隊列okong的消息。

隊列信息

總結(jié)

本章節(jié)主要是對RabbitMQ的集成和簡單使用進行了說明,對于高并發(fā)系統(tǒng)而言,消息隊列是一個常見的解決方案了。比如實現(xiàn)異步消息的通知,實現(xiàn)消費者/生產(chǎn)者模式等。由于對rabbitmq沒有過多的了解,詳細的用法及相關(guān)消息隊列的知識,可自行搜索相關(guān)資料下,這里就不闡述了。前段時間買了本關(guān)于RabbitMQ方面的書籍,等看完了,也希望能單獨寫一篇關(guān)于消息隊列的文章,敬請期待!

最后

目前互聯(lián)網(wǎng)上很多大佬都有SpringBoot系列教程,如有雷同,請多多包涵了。本文是作者在電腦前一字一句敲的,每一步都是實踐的。若文中有所錯誤之處,還望提出,謝謝。

標簽: 安全 代碼 服務器 服務器端 互聯(lián)網(wǎng) 數(shù)據(jù)庫 搜索 通信

版權(quán)申明:本站文章部分自網(wǎng)絡,如有侵權(quán),請聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請與原作者聯(lián)系。

上一篇:Java面試:投行的15個多線程和并發(fā)面試題

下一篇:SpringBoot | 第十一章:Redis 的集成和簡單使用