spring中RabbitMQ如何使用,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
十余年的黔西網站建設經驗,針對設計、前端、開發(fā)、售后、文案、推廣等六對一服務,響應快,48小時及時工作處理。成都營銷網站建設的優(yōu)勢是能夠根據(jù)用戶設備顯示端的尺寸不同,自動調整黔西建站的顯示方式,使網站能夠適用不同顯示終端,在瀏覽器中調整網站的寬度,無論在任何一種瀏覽器上瀏覽網站,都能展現(xiàn)優(yōu)雅布局與設計,從而大程度地提升瀏覽體驗。成都創(chuàng)新互聯(lián)公司從事“黔西網站設計”,“黔西網站推廣”以來,每個客戶項目都認真落實執(zhí)行。
常見的消息中間件產品:
(1)ActiveMQ
ActiveMQ 是Apache出品,最流行的,能力強勁的開源消息總線。ActiveMQ 是一個完全支持JMS1.1和J2EE 1.4規(guī)范的 JMS Provider實現(xiàn)。
(2)RabbitMQ
AMQP協(xié)議的領導實現(xiàn),支持多種場景。淘寶的MySQL集群內部有使用它進行通訊,OpenStack開源云平臺的通信組件,最先在金融行業(yè)得到運用。我們在本次課程中介紹 RabbitMQ的使用。
(3)ZeroMQ
史上最快的消息隊列系統(tǒng)
(4)Kafka
Apache下的一個子項目 。特點:高吞吐,在一臺普通的服務器上既可以達到10W/s的吞吐速率;完全的分布式系統(tǒng)。適合處理海量數(shù)據(jù)。
(5)RocketMQ 阿里巴巴
消息中間件利用高效可靠的消息傳遞機制進行平臺無關的數(shù)據(jù)交流,并基于數(shù)據(jù)通信來進行分布式系統(tǒng)的集成。通過提供消息傳遞和消息排隊模型,它可以在分布式環(huán)境下擴展進程間的通信。對于消息中間件,常見的角色大致也就有Producer(生產者)、Consumer(消費者)。
消息隊列中間件是分布式系統(tǒng)中重要的組件,主要解決應用解耦,異步消息,流量削鋒等問題,實現(xiàn)高性能,高可用,可伸縮和最終一致性架構。
Spring-amqp是對AMQP協(xié)議的抽象實現(xiàn),而spring-rabbit 是對協(xié)議的具體實現(xiàn),也是目前的唯一實現(xiàn)。底層使用的就是RabbitMQ。
已經配置好了ssm的開發(fā)環(huán)境
1.導入依賴
<dependencies> <dependency> <groupId>com.rabbitmq</groupId> <artifactId>amqp-client</artifactId> <version>5.5.3</version> </dependency> <dependency> <groupId>org.springframework.amqp</groupId> <artifactId>spring-rabbit</artifactId> <version>2.1.3.RELEASE</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.9.5</version> </dependency></dependencies>
2.編寫生產者
2.1配置文件
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:rabbit="http://www.springframework.org/schema/rabbit" xsi:schemaLocation="http://www.springframework.org/schema/rabbit http://www.springframework.org/schema/rabbit/spring-rabbit-1.4.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <context:component-scan base-package="cn.test.rabbitmq.spring"/><!-- 配置連接工廠 --><rabbit:connection-factory id="connectionFactory" virtual-host="/saas" host="127.0.0.1" port="5672" username="saas" password="saas" /><!-- 定義mq管理 --><rabbit:admin connection-factory="connectionFactory" /><!-- 聲明隊列 --><rabbit:queue name="spring.test.queue" auto-declare="true" durable="true" /><!-- 定義交換機綁定隊列(路由模式) --><rabbit:direct-exchange name="spring.test.exchange"> <rabbit:bindings> <rabbit:binding queue="spring.test.queue" key="user.insert" /> </rabbit:bindings></rabbit:direct-exchange><!-- 定義交換機綁定隊列(路由模式)使用匹配符<rabbit:topic-exchange id="springTestExchange" name="spring.test.exchange"> <rabbit:bindings> <rabbit:binding queue="spring.test.queue" pattern="#.#" /> </rabbit:bindings></rabbit:topic-exchange>--><!-- 消息對象json轉換類 --><bean id="jsonMessageConverter" class="org.springframework.amqp.support.converter.Jackson2JsonMessageConverter" /><!-- 定義模版 --><rabbit:template id="rabbitTemplate" connection-factory="connectionFactory" exchange="spring.test.exchange" message-converter="jsonMessageConverter"/></beans>
2.2 發(fā)送方代碼
這里是往RabbitMQ隊列中放入任務,讓消費者去取
package cn.test.rabbitmq.spring;import org.springframework.amqp.core.AmqpTemplate;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Component;@Componentpublic class MqSender { @Autowired private AmqpTemplate amqpTemplate; public void sendMessage(){ //根據(jù)key發(fā)送到對應的隊列 amqpTemplate.convertAndSend("user.insert","spring整合RabbitMQ消息"); System.out.println("發(fā)送成功........"); }}
2.3 測試代碼
package cn.test.rabbitmq.spring;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.amqp.core.AmqpTemplate;import org.springframework.amqp.rabbit.core.RabbitTemplate;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.support.ClassPathXmlApplicationContext;import org.springframework.test.context.ContextConfiguration;import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;import org.springframework.test.context.junit4.SpringRunner;import java.util.HashMap;@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(locations = "classpath:applicationContext-mq-send.xml")public class MqSendDemo { @Autowired private MqSender mqSender; @Test public void test(){ //根據(jù)key發(fā)送到對應的隊列 mqSender.sendMessage(); }}
3.編寫消費者
3.1 配置文件
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:rabbit="http://www.springframework.org/schema/rabbit" xsi:schemaLocation="http://www.springframework.org/schema/rabbit http://www.springframework.org/schema/rabbit/spring-rabbit.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!-- 配置連接工廠 --> <rabbit:connection-factory id="connectionFactory" virtual-host="/saas" host="127.0.0.1" port="5672" username="saas" password="saas" /> <!-- 定義mq管理 --> <rabbit:admin connection-factory="connectionFactory" /> <!-- 聲明隊列 --> <rabbit:queue name="spring.test.queue" auto-declare="true" durable="true" /> <!-- 定義消費者 --> <bean id="testMqListener" class="cn.test.rabbitmq.spring.MqListener" /> <!-- 定義消費者監(jiān)聽隊列 --> <rabbit:listener-container connection-factory="connectionFactory"> <rabbit:listener ref="testMqListener" queues="spring.test.queue" /> </rabbit:listener-container></beans>
3.2 監(jiān)聽代碼
package cn.test.rabbitmq.spring;import org.springframework.amqp.core.Message;import org.springframework.amqp.core.MessageListener;import org.springframework.stereotype.Component;import java.io.UnsupportedEncodingException;public class MqListener implements MessageListener { public void onMessage(Message message) { try { System.out.println(message.getBody()); String ms = new String(message.getBody(), "UTF-8"); System.out.println(ms); } catch (Exception e) { e.printStackTrace(); } }}
3.3 測試代碼
package cn.itcast.rabbitmq.spring;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.test.context.ContextConfiguration;import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(locations = "classpath:applicationContext-mq-receive.xml")public class MqReceiveDemo { @Test public void test(){ //等待隊列中放入任務,如果有任務,立即消費任務 while (true){ } }}
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)的支持。
網頁標題:spring中RabbitMQ如何使用
當前路徑:http://m.rwnh.cn/article6/igjoig.html
成都網站建設公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、標簽優(yōu)化、響應式網站、網站制作、動態(tài)網站、App設計
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)