目前,我正在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'的同一个类中。
因此,我没有使用任何上下文(注释或xml)。我不确定这是否是项目运行所必需的,因为我可以自己创建类的实例。
运行一些使用我的库的代码时
由于某种原因,消费者不会通过它的听众收到任何消息。这可能与队列是使用' amq.direct'创建的。交换和' test.route'路由键?还是别的什么?
答案 0 :(得分:3)
手动构建容器时(在Spring Application Context之外),您需要调用afterPropertiesSet()
和start()
。
此外,如果您的侦听器实现MessageListener
或ChannelAwareMessageListener
,则您不需要适配器。