侦听消息队列的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类内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • java操作json对象出现StackOverflow错误的问题及解决

    java操作json对象出现StackOverflow错误的问题及解决

    这篇文章主要介绍了java操作json对象出现StackOverflow错误的问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-06-06
  • 用java实现扫雷游戏

    用java实现扫雷游戏

    这篇文章主要为大家详细介绍了用java实现扫雷游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06
  • springboot-2.3.x最新版源码阅读环境搭建(基于gradle构建)

    springboot-2.3.x最新版源码阅读环境搭建(基于gradle构建)

    这篇文章主要介绍了springboot-2.3.x最新版源码阅读环境搭建(基于gradle构建),需要的朋友可以参考下
    2020-08-08
  • Java DOM4J方式生成XML的方法

    Java DOM4J方式生成XML的方法

    今天小编就为大家分享一篇Java DOM4J方式生成XML的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • java信号量控制线程打印顺序的示例分享

    java信号量控制线程打印顺序的示例分享

    这篇文章主要介绍了java信号量控制线程打印顺序的示例,如ABCABC这样输出线程,大家参考使用吧
    2014-01-01
  • Java8 stream流分组groupingBy的使用方法代码

    Java8 stream流分组groupingBy的使用方法代码

    对于java8的新特性groupingBy方法,相信有很多人都在工作中用过,这篇文章主要给大家介绍了关于Java8 stream流分组groupingBy的使用方法,需要的朋友可以参考下
    2024-01-01
  • 利用Java简单实现一个代码行数统计器方法实例

    利用Java简单实现一个代码行数统计器方法实例

    这篇文章主要给大家介绍了关于如何利用Java简单实现一个代码行数统计器的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • java多线程导入excel的方法

    java多线程导入excel的方法

    最近项目写了poi导入excel数据到数据库,想把学到的知识用于实践,于是使用多线程方式导入excel,需要的朋友们下面随着小编来一起学习学习吧
    2021-05-05
  • Java实现简单聊天机器人

    Java实现简单聊天机器人

    这篇文章主要为大家详细介绍了Java实现简单聊天机器人,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-07-07
  • easyexcel读取excel合并单元格数据的操作代码

    easyexcel读取excel合并单元格数据的操作代码

    这篇文章主要介绍了easyexcel读取excel合并单元格数据的操作代码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-05-05

最新评论