8.3 RabbitMQ消息消費

一般消費消息的應用會單獨部署,不會和發布消息的應用部署到一起,所以本節也單獨講一下。

1.maven依賴、application.properties配置和上一節一樣

2.applicationContext-rabbitmq.xml配置

<?xml version="1.0" encoding="UTF-8"?>
<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"
      xmlns:context="http://www.springframework.org/schema/context"
      xsi:schemaLocation="http://www.springframework.org/schema/beans
   http://www.springframework.org/schema/beans/spring-beans.xsd 
   http://www.springframework.org/schema/context
   http://www.springframework.org/schema/context/spring-context.xsd
   http://www.springframework.org/schema/rabbit
   http://www.springframework.org/schema/rabbit/spring-rabbit.xsd">

   <description>rabbitmq 連接服務配置</description>
   <context:property-placeholder ignore-unresolvable="true" location="classpath:/application.properties"/>
   <rabbit:connection-factory id="rabbitConnectionFactory" host="${rabbit.host}" port="${rabbit.port}"
                              username="${rabbit.username}" password="${rabbit.password}"
                              virtual-host="${rabbit.vhost}" channel-cache-size="50"/>
   <!-- 消費者 -->
   <bean name="rabbitmqService" class="com.critc.service.RabbitmqService"></bean>
   <rabbit:queue id="test_mq" name="test_mq" durable="true" auto-delete="false" exclusive="false" />
   <!-- 配置監聽 -->
   <rabbit:listener-container connection-factory="rabbitConnectionFactory" acknowledge="auto" >
       <rabbit:listener queues="test_mq" ref="rabbitmqService" />
   </rabbit:listener-container>
</beans>

這里面定義了一個消費者和一個監聽器來處理消息

3.RabbitmqService 消費類

@Service
public class RabbitmqService implements MessageListener {
    public void onMessage(Message message) {
        try {
            String msg = new String(message.getBody(), "utf-8");
            System.out.println("消息消費者 = " + msg);
        } catch (Exception e) {
        }
    }
}

這里面需要強調一點,傳到這里面的Message是一個對象,包含消息頭、消息體等各種信息,需要進行一下轉碼,取到消息body,然后進行處理。

4.web.xml 啟動加載配置

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         id="WebApp_ID"
         version="3.1">
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            classpath:applicationContext-rabbitmq.xml
        </param-value>
    </context-param>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

</web-app>

啟動時加載配置,啟動監聽。

5.啟動執行

rabbitmq監聽.png

控制臺會輸出消息body,后續可以處理這些消息

源碼下載

本工程詳細源碼

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,947評論 18 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,337評論 25 708
  • Spring Boot 參考指南 介紹 轉載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,958評論 6 342
  • 發現 關注 消息 iOS 第三方庫、插件、知名博客總結 作者大灰狼的小綿羊哥哥關注 2017.06.26 09:4...
    肇東周閱讀 12,241評論 4 61
  • 凌幽/文 我從不懷念 即使回不到從前 當又想起你的臉 已時過境遷 你的淺...
    洛凌幽閱讀 410評論 7 4