<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                RabbitMQ入門教程 For Java【9】 - 與Spring集成 簡介: ? ? ? ? RabbitMQ在與Spring集成我做了兩個項目,一個項目是消息生產者,負責發送消息,另外一個是消息消費者,負責監聽消息。大致的流程圖如下: ![](https://box.kancloud.cn/2016-03-01_56d507da03e4d.jpg) 項目環境: Windows7 64bit Eclipse Kepler SR2 JDK 1.7 Tomcat 7 RabbitMQ 3.6.0 項目源碼地址: 生產者:https://github.com/chwshuang/spring-rabbitmq-producer 消費者:https://github.com/chwshuang/spring-rabbitmq-customer # 生產者: ? ? ? ? 與Spring集成的項目使用的是Maven,只需要一個依賴配置就搞定: ~~~ lt;dependency>?? org.springframework.amqp?? spring-rabbit?? 1.3.5.RELEASE?? lt;/dependency>?? ~~~ ? ? ? ??消息生產者在Spring的配置也比較簡單,只需要一個連接工廠和一個連接模版類就搞定了。 ? ? ? ??生產者在Spring中使用時,只需要定義一個服務接口實現類即可。 ~~~ @Service("rabbitService") public class RabbitServiceImpl { private static Logger log = LoggerFactory.getLogger(RabbitServiceImpl.class); @Autowired private RabbitTemplate rabbitTemplate; /** * 發送消息 * @param msg 消息內容 * @param routingKey 路由關鍵字 * void */ public void setMessage(String msg, String routingKey) { rabbitTemplate.convertAndSend(routingKey, msg); log.info("rabbitmq--發送消息完成: routingKey[{}]-msg[{}]", routingKey, msg); } } ~~~ 生產者端還需要創建一個測試頁面,通過Ajax技術發送消息到生產者端的控制層,由控制層調用消息服務層發送消息。 ~~~ <%@ page contentType="text/html;charset=UTF-8" language="java"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <script src="http://cdn.bootcss.com/jquery/1.11.3/jquery.min.js"></script> <title>測試</title> <script type="text/javascript"> function sendMsg(){ var t = $("#type").val(); //alert(t); $.post('/producer/rabbit/setMessage',{msg:'hello world '+t+' rabbit!',type:t}, function(result){ if(result.success){ //alert("發送成功"); }else{ alert("發送失敗"); } },'json'); } </script> </head> <body> <h1>發送消息</h1><hr> <select id="type" > <option selected="selected" value="red">red</option> <option value="blue">blue</option> </select> <button id="send" onclick="sendMsg()" value="發送消息" type="button" title="send">發送</button> </body> </html> ~~~ # 消費者: ? ? ? ??RabbitMQ的消息消費者需要監聽消息,以及處理收到的消息,所以需要配置一個監聽器,聲明一個需要監聽的隊列,和一個消息處理器。消費者端與spring集成的侵入較少。 ~~~ <pre name="code" class="plain"> <!-- ========================================RabbitMQ========================================= --> <!-- 連接工廠 --> <rabbit:connection-factory id="connectionFactory" host="192.168.5.198" publisher-confirms="true" virtual-host="test" username="test" password="1234" /> <!-- 監聽器 --> <rabbit:listener-container connection-factory="connectionFactory"> <!-- queues是隊列名稱,可填多個,用逗號隔開, method是ref指定的Bean調用Invoke方法執行的方法名稱 --> <rabbit:listener queues="red" method="onMessage" ref="redQueueListener" /> <rabbit:listener queues="blue" method="onMessage" ref="blueQueueListener" /> </rabbit:listener-container> <!-- 隊列聲明 --> <rabbit:queue name="red" durable="true" /> <!-- 隊列聲明 --> <rabbit:queue name="blue" durable="true" /> <!-- 紅色監聽處理器 --> <bean id="redQueueListener" class="com.aitongyi.customer.RedQueueListener" /> <!-- 藍色監聽處理器 --> <bean id="blueQueueListener" class="com.aitongyi.customer.BlueQueueListener" /> ~~~ ? ? ? ??消息處理器可以只是一個通過spring管理的普通Bean對象,需要有一個在xml中定義method同名的方法 ~~~ public class RedQueueListener{ private static Logger log = LoggerFactory.getLogger(RedQueueListener.class); /** * 處理消息 * @param message * void */ public void onMessage(String message) { log.info("RedQueueListener--receved:" + message); } } ~~~ # RabbitMQ創建消息環境 ? ? ? ? 在項目開發完成后,我們需要在RabbitMQ中創建vhost,user、queues,這樣,消費者在啟動的時候,登錄、聲明虛擬機、隊列就不會報錯。 1\. 創建test虛擬機,然后點擊Name標簽,進入虛擬機,添加權限 ![](https://box.kancloud.cn/2016-03-01_56d507da19ff0.jpg) 2\. 進入【Admin】菜單【Users】標簽創建用戶,然后點擊用戶名稱進入詳情設置權限 ![](https://box.kancloud.cn/2016-03-01_56d507da308e2.jpg) ![](https://box.kancloud.cn/2016-03-01_56d507da43229.jpg) 3\. 進入【Queues】菜單,創建隊列 ![](https://box.kancloud.cn/2016-03-01_56d507da567b1.jpg) # 執行測試: 將生產者和消費者項目添加到Tomcat中,然后啟動,在瀏覽器輸入【http://localhost:8080/producer/test.jsp】,進入測試頁面,分別發送紅色、藍色的消息到隊列,消費者端會顯示接收日志 ![](https://box.kancloud.cn/2016-03-01_56d507da6f210.jpg) ![](https://box.kancloud.cn/2016-03-01_56d507da7f629.jpg) 生產者端日志 ~~~ 2016-01-25 18:09:26 722 [INFO] c.a.p.c.RabbitController - rabbitmq--收到待發送消息: type[blue]-msg[hello world blue rabbit!] 2016-01-25 18:09:26 723 [INFO] c.a.p.s.RabbitServiceImpl - rabbitmq--發送消息完成: routingKey[blue]-msg[hello world blue rabbit!] 2016-01-25 18:09:28 715 [INFO] c.a.p.c.RabbitController - rabbitmq--收到待發送消息: type[red]-msg[hello world red rabbit!] 2016-01-25 18:09:28 716 [INFO] c.a.p.s.RabbitServiceImpl - rabbitmq--發送消息完成: routingKey[red]-msg[hello world red rabbit!] ~~~ 消費者端日志 ~~~ 2016-01-25 18:09:26 727 [INFO] c.a.c.BlueQueueListener - BlueQueueListener Receved:hello world blue rabbit! 2016-01-25 18:09:28 719 [INFO] c.a.c.RedQueueListener - RedQueueListener Receved:hello world red rabbit! ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看