侦听消息队列的Message Listener类示例详解
Spring AMQP 是基于 Spring 框架的AMQP消息解决方案,提供模板化的发送和接收消息的抽象层,提供基于消息驱动的 POJO的消息监听等,简化了我们对于RabbitMQ相关程序的开发。
Spring AMQP包含一些模块,如:spring-amqp, spring-rabbit and spring-erlang等,每个模块分别由独立的一些Jar包组成。
AbstractAdaptableMessageListener用于在spring容器接收到消息后用于处理消息的抽象基类,如果需要使用自己定义的pojoL类来实现处理消息时,必须要继承该类,并实现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")); } }
实现了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中实现了MessageListener类的onMessage(Message message)方法,其实际实现的还是ChannelAwareMessageListener类中的onMessage方法,channel设置为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进行处理。
到此这篇关于侦听消息队列的Message Listener类的文章就介绍到这了,更多相关侦听消息队列Message Listener类内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
java操作json对象出现StackOverflow错误的问题及解决
这篇文章主要介绍了java操作json对象出现StackOverflow错误的问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2022-06-06springboot-2.3.x最新版源码阅读环境搭建(基于gradle构建)
这篇文章主要介绍了springboot-2.3.x最新版源码阅读环境搭建(基于gradle构建),需要的朋友可以参考下2020-08-08Java8 stream流分组groupingBy的使用方法代码
对于java8的新特性groupingBy方法,相信有很多人都在工作中用过,这篇文章主要给大家介绍了关于Java8 stream流分组groupingBy的使用方法,需要的朋友可以参考下2024-01-01
最新评论