编程语言
首页 > 编程语言> > java-Spring AMQP:MessageListener没有收到任何消息

java-Spring AMQP:MessageListener没有收到任何消息

作者:互联网

目前,我正在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”路由键创建队列的事实有关吗?或者是别的什么?

解决方法:

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

另外,如果您的侦听器实现了MessageListener或ChannelAwareMessageListener,则不需要适配器.

标签:spring-amqp,rabbitmq,message-listener,java
来源: https://codeday.me/bug/20191120/2044503.html