91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

spring中RabbitMQ如何使用

發布時間:2021-07-23 16:54:02 來源:億速云 閱讀:154 作者:Leah 欄目:編程語言

spring中RabbitMQ如何使用,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

常見的消息中間件產品:

(1)ActiveMQ

ActiveMQ 是Apache出品,最流行的,能力強勁的開源消息總線。ActiveMQ 是一個完全支持JMS1.1和J2EE 1.4規范的 JMS Provider實現。

(2)RabbitMQ

AMQP協議的領導實現,支持多種場景。淘寶的MySQL集群內部有使用它進行通訊,OpenStack開源云平臺的通信組件,最先在金融行業得到運用。我們在本次課程中介紹 RabbitMQ的使用。

(3)ZeroMQ

史上最快的消息隊列系統

(4)Kafka

Apache下的一個子項目 。特點:高吞吐,在一臺普通的服務器上既可以達到10W/s的吞吐速率;完全的分布式系統。適合處理海量數據。

(5)RocketMQ 阿里巴巴

消息中間件利用高效可靠的消息傳遞機制進行平臺無關的數據交流,并基于數據通信來進行分布式系統的集成。通過提供消息傳遞和消息排隊模型,它可以在分布式環境下擴展進程間的通信。對于消息中間件,常見的角色大致也就有Producer(生產者)、Consumer(消費者)。

消息隊列中間件是分布式系統中重要的組件,主要解決應用解耦,異步消息,流量削鋒等問題,實現高性能,高可用,可伸縮和最終一致性架構。

Spring-amqp是對AMQP協議的抽象實現,而spring-rabbit 是對協議的具體實現,也是目前的唯一實現。底層使用的就是RabbitMQ。

已經配置好了ssm的開發環境

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 發送方代碼

這里是往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(){    //根據key發送到對應的隊列    amqpTemplate.convertAndSend("user.insert","spring整合RabbitMQ消息");    System.out.println("發送成功........");  }}

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(){    //根據key發送到對應的隊列    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" />  <!-- 定義消費者監聽隊列 -->  <rabbit:listener-container      connection-factory="connectionFactory">    <rabbit:listener ref="testMqListener" queues="spring.test.queue" />  </rabbit:listener-container></beans>

3.2 監聽代碼

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){    }  }}

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

于田县| 开原市| 合作市| 锡林郭勒盟| 瑞安市| 临城县| 隆回县| 农安县| 云阳县| 平定县| 余干县| 泸水县| 柳林县| 年辖:市辖区| 随州市| 景宁| 保定市| 宽甸| 泊头市| 扎鲁特旗| 株洲市| 界首市| 河南省| 湖口县| 平陆县| 崇信县| 增城市| 方城县| 白山市| 全州县| 德安县| 宕昌县| 尤溪县| 东乡族自治县| 五指山市| 贵溪市| 万州区| 芮城县| 平度市| 三台县| 民丰县|