我是rabbitmq的新手。我正在使用spring-amqp来实现该功能。 我们知道spring在应用程序初始化时提供@RabbitListener来注册一个侦听器来排队。 我想在单击某个按钮时设计一个函数,将创建一个新的使用者并监听指定的队列。 Java base提供了使用channel.basicConsume()方法来使用队列。 春天提供这样的功能吗?
我想实现如下:
制作人继续向扇出交换机发送消息。 当消费想要加入时,调用function1 - >创建队列并绑定到交换 - >消费信息 当消费想要离开时,调用function2 - >断开连接
答案 0 :(得分:0)
有几个选择。
使用其中一种RabbitTemplate.receive()
或convertAndReceive()
方法一次获取一条消息,如果没有消息,您可以设置receiveTimeout
。< / p>
RabbitTemplate.execute()
带有一个回调,可以获得一个可以调用basicConsume()
的频道。这是一个较低级别的选项,不会为您进行任何转化。
动态创建SimpleMessageListenerContainer
(或DirectMessageListenerContainer
)并根据需要启动/停止。
...
在所有情况下,您都可以使用RabbitAdmin
创建/绑定队列,除了选项1之外的所有队列,它可能是一个自动删除队列,在取消使用者时将被删除。使用选项1,您必须使用非自动删除队列并使用RabbitAdmin
将其删除。
我建议#3使用纯Spring AMQP是最有效的。
您还可以将Spring Integration与入站通道适配器和发布 - 订阅通道一起使用;这样你只需要一个队列(每个应用程序实例),然后为每个用户订阅一个新的MessageHandler
到该频道。