偵聽消息隊列的Message Listener類示例詳解
Spring AMQP 是基于 Spring 框架的AMQP消息解決方案,提供模板化的發(fā)送和接收消息的抽象層,提供基于消息驅(qū)動的 POJO的消息監(jiān)聽等,簡化了我們對于RabbitMQ相關(guān)程序的開發(fā)。
Spring AMQP包含一些模塊,如:spring-amqp, spring-rabbit and spring-erlang等,每個模塊分別由獨立的一些Jar包組成。
AbstractAdaptableMessageListener用于在spring容器接收到消息后用于處理消息的抽象基類,如果需要使用自己定義的pojoL類來實現(xiàn)處理消息時,必須要繼承該類,并實現(xiàn)onMessage()方法,如下:
public class MessageReceive extends AbstractAdaptableMessageListener {
private static final Logger LOGGER = LoggerFactory.getLogger(MessageReceive.class);
@Override
public void onMessage(Message message, Channel channel) throws Exception {
LOGGER.info("receive message:{}", new String(message.getBody(), "UTF-8"));
}
}實現(xiàn)了MessageListener, ChannelAwareMessageListener接口
MessageListener
@FunctionalInterface
public interface MessageListener {
void onMessage(Message message);
}@FunctionalInterface注解表示該接口是一個功能類接口
ChannelAwareMessageListener
@FunctionalInterface
public interface ChannelAwareMessageListener {
/**
* Callback for processing a received Rabbit message.
* <p>Implementors are supposed to process the given Message,
* typically sending reply messages through the given Session.
* @param message the received AMQP message (never <code>null</code>)
* @param channel the underlying Rabbit Channel (never <code>null</code>)
* @throws Exception Any.
*/
void onMessage(Message message, Channel channel) throws Exception;
}在AbstractAdaptableMessageListener中實現(xiàn)了MessageListener類的onMessage(Message message)方法,其實際實現(xiàn)的還是ChannelAwareMessageListener類中的onMessage方法,channel設(shè)置為null
@Override
public void onMessage(Message message) {
try {
onMessage(message, null);
}
catch (Exception e) {
throw new ListenerExecutionFailedException("Listener threw exception", e, message);
}
}自定義消息處理的POJO類繼承AbstractAdaptableMessageListener類后,重寫onMessage方法,當spring容器接收消息后,會自動交由onMessage進行處理。
到此這篇關(guān)于偵聽消息隊列的Message Listener類的文章就介紹到這了,更多相關(guān)偵聽消息隊列Message Listener類內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MyBatis-Plus:saveOrUpdate根據(jù)指定字段更新或插入方式
這篇文章主要介紹了MyBatis-Plus:saveOrUpdate根據(jù)指定字段更新或插入方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2025-04-04
SpringBoot整合Mybatis實現(xiàn)CRUD
這篇文章主要介紹了SpringBoot整合Mybatis實現(xiàn)CRUD的相關(guān)知識,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-09-09
搭建MyBatis-Plus框架并進行數(shù)據(jù)庫增刪改查功能
這篇文章主要介紹了搭建MyBatis-Plus框架并進行數(shù)據(jù)庫增刪改查,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-03-03

