這篇文章主要介紹了簡單了解如何在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 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 name="spring.test.exchange"> <rabbit:bindings> <rabbit:binding queue="spring.test.queue" pattern="#.#" /> </rabbit:bindings></rabbit:topic-exchange>--><!-- 消息對象json轉換類 --><bean class="org.springframework.amqp.support.converter.Jackson2JsonMessageConverter" /><!-- 定義模版 --><rabbit:template connection-factory="connectionFactory" exchange="spring.test.exchange" message-converter="jsonMessageConverter"/></beans>
新聞熱點
疑難解答