首页 > 解决方案 > DirectMessageListenerContainer 是否可以与 BatchMessageListener 一起使用

问题描述

在当前版本 org.springframework.amqp: 2.2.2 BatchMessageListener 包含:

@Override
default void onMessage(Message message) {
    throw new UnsupportedOperationException("Should never be called by the container");
}

这是正确的,但是当我在 DirectMessageListenerContainer 中使用它时

listenerContainer.setMessageListener(new BatchMessageListener() {
    @Override
    public void onMessageBatch(List<Message> messages) {
      ....
    }
}

我得到了 UnsupportedOperationException("不应该被容器调用");

标签: springrabbitmqspring-amqp

解决方案


BatchMessageListener不支持,DirectMessagelistenerContainer因为侦听器直接在 amqp-client 线程上为每个接收到的消息调用。


推荐阅读