侦听消息队列的Message Listener类示例详解

 更新时间:2023年12月09日 10:48:33   作者:Rcfee  
Spring AMQP 是基于 Spring 框架的AMQP消息解决方案,提供模板化的发送和接收消息的抽象层,提供基于消息驱动的 POJO的消息监听等,简化了我们对于RabbitMQ相关程序的开发,本文给大家介绍侦听消息队列的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类内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Spring中HandlerAdapter接口源码解析

    Spring中HandlerAdapter接口源码解析

    这篇文章主要介绍了Spring中HandlerAdapter接口源码解析,HandlerAdapter是一个适配器接口类,适配器模式是指两个不兼容接口之间的桥梁,要想让一个接口使用另外一个接口的实现中间可以加一层适配器类,需要的朋友可以参考下
    2023-11-11
  • Java实战之酒店人事管理系统的实现

    Java实战之酒店人事管理系统的实现

    这篇文章主要介绍了如何用Java实现酒店人事管理系统,文中采用的技术有:JSP、Spring、SpringMVC、MyBatis等,感兴趣的小伙伴可以学习一下
    2022-03-03
  • Windows和macOS系统下Java21环境配置全流程

    Windows和macOS系统下Java21环境配置全流程

    在日常开发工作中,合适的开发环境是提升效率的重要前提,这篇文章主要介绍了Windows和macOS系统下Java21环境配置的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2026-03-03
  • RabbitMq报错reply-code=406 reply-text=PRECONDITION_FAILED解决

    RabbitMq报错reply-code=406 reply-text=PRECONDITION_FAILED

    这篇文章主要为大家介绍了RabbitMq报错reply-code=406 reply-text=PRECONDITION_FAILED分析解决,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • Java中invokedynamic字节码指令问题

    Java中invokedynamic字节码指令问题

    这篇文章主要介绍了Java中invokedynamic字节码指令问题,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-04-04
  • Spring在代码中获取bean的几种方式详解

    Spring在代码中获取bean的几种方式详解

    这篇文章主要介绍了Spring在代码中获取bean的几种方式详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • Java多态成员访问的特点是什么?

    Java多态成员访问的特点是什么?

    在上一篇文章中介绍了方法重载和方法重写的区别,但是在多态情况下发现程序的执行结果和我们预期的不太一样,这篇将继续介绍多态场景下,Java成员访问的特点,需要的朋友可以参考下
    2021-06-06
  • 解读GC日志中的各项指标用法

    解读GC日志中的各项指标用法

    这篇文章主要介绍了GC日志中的各项指标用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-07-07
  • Java字符串替换函数replace()用法解析

    Java字符串替换函数replace()用法解析

    这篇文章主要介绍了Java字符串替换函数replace()用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01
  • 结合Service层讲解DAO层的异常处理操作

    结合Service层讲解DAO层的异常处理操作

    这篇文章主要介绍了结合Service层讲解DAO层的异常处理操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06

最新评论