歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> RabbitMQ - 實例操作

RabbitMQ - 實例操作

日期:2017/3/1 9:14:24   编辑:Linux編程

以前在單項目中用過RabbitMQ,沒有問題,不過這次在分布式項目中使用RabbitMQ中有點搞糊塗了,但是實際上是沒有問題的,思路清晰就行

簡單看一下實際操作的示例吧:

資源文件中需要配置基本的rabbitMQ的屬性,如下:

1 #rabbitmq config
2 rabbitmq.host=192.168.1.188
3 rabbitmq.port=5672
4 rabbitmq.username=lee
5 rabbitmq.password=lee
6 rabbitmq.vhost=danger

然後要配置applicationContext-rabbitmq.xml,這個文件需要新建,當然你也可以在你的service.xml中編寫,但是為了配置清晰嘛

內容如下:

 1     <!-- 定義RabbitMQ的連接工廠 -->
 2     <rabbit:connection-factory id="connectionFactory"
 3         host="${rabbitmq.host}" 
 4         port="${rabbitmq.port}" 
 5         username="${rabbitmq.username}" 
 6         password="${rabbitmq.password}"
 7         virtual-host="${rabbitmq.vhost}" />
 8         
 9     <!-- 定義消息管理員 -->
10     <rabbit:admin connection-factory="connectionFactory"/>
11     
12     <!-- 生產者需要以下 -->
13     <!-- 定義交換機 -->
14     <rabbit:topic-exchange name="rest-content-exchange" durable="true" auto-declare="true">
15         <!-- 如果是2個不同的系統進行通知,那就手動在管理後台進行綁定 -->
16         <rabbit:bindings>
17             <rabbit:binding queue="rest-sms-queue" pattern="rest.sms.#"/>
18             <rabbit:binding queue="rest-jpush-queue" pattern="rest.jpush.#"/>
19             <rabbit:binding queue="rest-sysmsg-queue" pattern="rest.sysmsg.#"/>
20         </rabbit:bindings>
21     </rabbit:topic-exchange>
22     
23     <!-- 定義rabbitTemplate -->
24     <rabbit:template id="rabbitTemplate" connection-factory="connectionFactory" exchange="rest-content-exchange"/>
25     
26     
27     <!-- 消費者需要以下 -->
28     <!-- 定義隊列 -->
29     <rabbit:queue name="rest-sms-queue" durable="true" auto-declare="true"/>
30     <rabbit:queue name="rest-jpush-queue" durable="true" auto-declare="true"/>
31     <rabbit:queue name="rest-sysmsg-queue" durable="true" auto-declare="true"/>
32     
33     <!-- 消費者 -->
34     <bean id="smsHandler" class="com.dingli.components.mq.handler.SmsHandler"></bean>
35     <bean id="jpushHandler" class="com.dingli.components.mq.handler.JpushHandler"></bean>
36     <bean id="saveSysMsgHandler" class="com.dingli.components.mq.handler.SaveSysMsgHandler"></bean>
37     
38     <!-- 隊列監聽 -->
39     <!-- TODO 注釋了後台不會滾動顯示 -->
40     <rabbit:listener-container connection-factory="connectionFactory" acknowledge="none" >
41         <rabbit:listener ref="smsHandler" method="excute" queue-names="rest-sms-queue" />
42         <rabbit:listener ref="jpushHandler" method="excute" queue-names="rest-jpush-queue" />
43         <rabbit:listener ref="saveSysMsgHandler" method="saveMsgExcute" queue-names="rest-sysmsg-queue" />
44     </rabbit:listener-container>

這裡需要注意acknowledge,這個屬性默認是auto,如果消費者報錯了,會一直報錯,因為他是輪詢監聽的,可以修改為none或者manul

再看看實現的消費者以及助手類,助手類可以理解為service

監聽3個routing-key

 1 @Component
 2 public class SendMsgRestProducerImpl implements SendMsgRestProducer {
 3 
 4     @Autowired    
 5     private RabbitTemplate rabbitTemplate;
 6     
 7     @Override
 8     public void sendSMS(String mqSMSMessageJson) {
 9         rabbitTemplate.convertAndSend("rest.sms.send", mqSMSMessageJson);
10     }
11 
12     @Override
13     public void jpushContent(String mqJPushMessageJson) {
14         rabbitTemplate.convertAndSend("rest.jpush.send", mqJPushMessageJson);
15     }
16 
17     @Override
18     public void saveContent(String mqSysMessageJson) {
19         rabbitTemplate.convertAndSend("rest.sysmsg.send", mqSysMessageJson);
20     }
21     
22 }

這樣,直接調用componentImpl就行了!並且這3個都是異步的

為什麼要使用RabbitMQ,那就是效率問題,有些主流程實現後,附流程你不在乎,成功不成功不影響,頂多重發一次,這樣的業務可以使用消息隊列

當然也有更多更復雜的也需要用的,這裡的業務場景就比較簡單了

CentOS 5.6 安裝RabbitMQ http://www.linuxidc.com/Linux/2013-02/79508.htm

RabbitMQ客戶端C++安裝詳細記錄 http://www.linuxidc.com/Linux/2012-02/53521.htm

用Python嘗試RabbitMQ http://www.linuxidc.com/Linux/2011-12/50653.htm

RabbitMQ集群環境生產實例部署 http://www.linuxidc.com/Linux/2012-10/72720.htm

Ubuntu下PHP + RabbitMQ使用 http://www.linuxidc.com/Linux/2010-07/27309.htm

在CentOS上安裝RabbitMQ流程 http://www.linuxidc.com/Linux/2011-12/49610.htm

RabbitMQ概念及環境搭建 http://www.linuxidc.com/Linux/2014-12/110449.htm

RabbitMQ入門教程 http://www.linuxidc.com/Linux/2015-02/113983.htm

RabbitMQ 的詳細介紹:請點這裡
RabbitMQ 的下載地址:請點這裡

Copyright © Linux教程網 All Rights Reserved