java onmessage监听消息队列_侦听消息队列的Message Listener类

本文介绍了Spring AMQP如何简化RabbitMQ应用程序的开发,重点讲解了AbstractAdaptableMessageListener作为消息处理基类的作用,以及如何通过继承并实现onMessage方法来创建自定义的消息监听器。此外,还提到了MessageListener和ChannelAwareMessageListener这两个功能接口。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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.

*

Implementors are supposed to process the given Message,

* typically sending reply messages through the given Session.

* @param message the received AMQP message (never null)

* @param channel the underlying Rabbit Channel (never null)

* @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进行处理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值