當前位置:編程學習大全網 - 編程語言 - RabbitMQ筆記十三:使用@RabbitListener註解消費消息

RabbitMQ筆記十三:使用@RabbitListener註解消費消息

之前的博客中我們可以在spring容器中構建 SimpleMessageListenerContainer 來消費消息,我們也可以使用 @RabbitListener 來消費消息。

定義消息處理器, @RabbitListener 註解標記的方法

應用啟動類, @EnableRabbit 啟用 @RabbitListener

測試:

控制臺打印:

如果發送的消息 content_type 的屬性是 text ,那麽接收的消息處理方法的參數就必須是 String 類型,如果是 byte[] 類型就會報錯。

控制臺報錯

總結

如果消息屬性中沒有指定 content_type ,則接收消息的處理方法接收類型是 byte[] ,如果消息屬性中指定 content_type為text ,則接收消息的處理方法的參數類型是 String 類型。不管有沒有指定 content_type ,處理消息方法的參數類型是Message都不會報錯。

步驟

具體的消息處理方法的參數是跟 MessageConverter 轉換後的java對象有關。

如果想要設置 MessageConverte r,則需要在 RabbitListenerContainerFactory 的實例中去設置,( setMessageConverter 方法)

獲取單壹個Header的屬性,Header還有其他的壹些屬性,比如 required , defaultvalue 等屬性,顧名思義:

配置文件:

啟動類:

定義mq中不存在的 Queue , exchange 和 route key

從上面的我們知道聲明必須容器中要有 RabbitAdmin 和 RabbitTemplate 實例

應用啟動類

測試驗證

控制臺打印:

說明自動聲明的綁定中的隊列被自動默認監聽。 @RabbitListener 註解中的 bindings 和 queues 參數不能同時指定,否則會報錯。

@RabbitListener 可以標註在類上面,當使用在類上面的時候,需要配合 @RabbitHandler 註解壹起使用, @RabbitListener 標註在類上面表示當有收到消息的時候,就交給帶有 @RabbitHandler 的方法處理,具體找哪個方法處理,需要跟進 MessageConverter 轉換後的java對象。

配置:

處理器方法

應用啟動類:

發送不包含content_type屬性的消息和content_type屬性為text的消息,控制臺打印:

@RabbitListener 註解的 containerFactory 屬性可以指定壹個 RabbitListenerContainerFactory 的bean,默認是找名字為 rabbitListenerContainerFactory 的實例。

當我們將 ConsumerConfig 類中的 RabbitListenerContainerFactory 實例的對象名改掉的時候,發現就會報錯。

此時控制臺上報錯,

此時如果配置壹下 @RabbitListener 註解的 containerFactory 屬性便不會報錯。

我們再去改造壹下在 RabbitListenerContainerFactory 實例中定義消息類型轉換器

User對象:

在處理器中增加參數是User的方法:

  • 上一篇:有沒有搞笑點的腦筋急轉彎那
  • 下一篇:我現在初中,在電腦上有什麽地方可以賺錢?
  • copyright 2024編程學習大全網