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

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

2018-08-25    來源:importnew

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

前言

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

RabbitMQ介紹

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

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

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

題外話:其實(shí)Redis也有提供隊(duì)列功能。但我覺得,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類是其自動(dòng)加載配置類。

# 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真的太方便了,寫代碼都是愉悅的)。正常使用時(shí),若作為一個(gè)消費(fèi)者,我們會(huì)配置一個(gè)接收隊(duì)列,這里為了示例,直接以最小配置來演示下。

配置一個(gè)名為okong的隊(duì)列?

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

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

@Component
//@RabbitListener 監(jiān)聽 okong 隊(duì)列
@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ā)送和接收隊(duì)列消息
 * @author oKong
 *
 */
@RestController
public class DemoController {
	
	//AmqpTemplate接口定義了發(fā)送和接收消息的基本操作,目前spring官方也只集成了Rabbitmq一個(gè)消息隊(duì)列。。
	@Autowired
	AmqpTemplate rabbitmqTemplate;
	
	@GetMapping("/send")
	public String send(String msg) {
		//發(fā)送消息
		rabbitmqTemplate.convertAndSend("okong", msg);
		return "消息:" + msg + ",已發(fā)送";
	}
}

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

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

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

控制臺(tái)界面,在Queues標(biāo)簽頁,也可以查看到隊(duì)列okong的消息。

隊(duì)列信息

總結(jié)

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

最后

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

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

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

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

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