标签:spring-amqp rabbitmq message-listener java
目前,我正在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
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。