如何在JavaSpring中侦听具有不同名称的RabbitMQ队列?

nwo49xxi  于 2021-06-29  发布在  Java
关注(0)|答案(1)|浏览(400)

我有一个聊天应用程序,它会为每个在线的用户创建一个队列,我正在尝试获取该用户的所有排队消息,问题是我只能通过消息来知道队列的名称,因此我不能使用@rabbitlistener给它一个队列名称。除了使用rabbitmplateconvert之外,有没有其他方法可以让所有的消息排队等待一个用户?因为它只给我一条信息而不是所有的

6vl6ewon

6vl6ewon1#

我想说的是,最好研究一下websocket上的stomp协议,它作为rabbitmq上的插件而受到支持。它确实为每个用户创建了一个单独的队列,并且有一种机制来使用发送给该用户的所有消息。
请参见spring框架中的websocket支持:https://docs.spring.io/spring-framework/docs/current/reference/html/web.html#websocket
如果您不能做到这一点,那么您可能应该研究一个定制的解决方案,在该解决方案中,您将队列名称发送到某个静态交换,以便使用者知道这样一个新的队列,您可以将它添加到 ListenerContainer 在运行时(稍后分别删除)。在spring amqp中查看更多信息:https://docs.spring.io/spring-amqp/docs/current/reference/html/#listener-队列

相关问题