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