gpt4 book ai didi

java - Spring AMQP : MessageListener not receiving any messages

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:44:17 26 4
gpt4 key购买 nike

目前,我正在 Spring AMQP 项目之上构建自定义库。我已经到了想要实现消息监听器以便能够异步接收消息的地步。在进一步阅读项目指定的文档后,我发现实现自己的消息监听器应该很容易。只需实现 MessageListener 类并将其配置为触发传入消息。

这就是我所做的:

public class ReceiveController implements MessageListener
{
@Override
public void onMessage(Message message)
{
System.out.println("Received a message!");
}
}

接下来我是这样配置的:

private SimpleMessageListenerContainer configureMessageListener()
{
SimpleMessageListenerContainer container = new SimpleMessageListenerContainer();
container.setConnectionFactory(connection);
container.setQueueNames("test.queue");
container.setMessageListener(this);
return container;
}

这两段代码都位于同一个名为“ReceiveController”的类中。

Hence the fact that I'm not using any context (annotations or xml). I'm not sure if this is mandatory for the project to function as I can just create instances of the classes myself.

运行一些使用我的库的代码时

  • 消费者客户端连接到 RabbitMQ 代理(并保持连接)。
  • 生产者客户端连接到 RabbitMQ 代理,发送消息并断开连接。
  • 当我使用管理插件查看队列时,我看到一条消息已放入队列中,但未触发消息监听器。

出于某种原因,消费者不会通过它的监听器接收任何消息。这可能与队列是使用“amq.direct”交换和“test.route”路由 key 创建的事实有关吗?还是其他原因?

最佳答案

手动构建容器时(在 Spring Application Context 之外),您需要调用 afterPropertiesSet()start()

此外,如果您的监听器实现了 MessageListenerChannelAwareMessageListener,则您不需要适配器。

关于java - Spring AMQP : MessageListener not receiving any messages,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29533114/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com