gpt4 book ai didi

RabbitMQ - 向队列中的特定消费者发送消息

转载 作者:行者123 更新时间:2023-12-02 19:34:51 31 4
gpt4 key购买 nike

这是场景 - 有多个应用程序服务器。浏览器可以通过 websocket 连接到任何应用服务器。

应用程序服务器(消费者)都在监听特定队列。一旦收到 Web 套接字连接,特定的应用程序服务器就会将队列与路由键 {userId} 绑定(bind)到直接交换。

我希望发送到带有路由键 {userId} 的直接交换的消息只能由发生绑定(bind)的特定应用服务器接收。

在这种情况下,直接交换是正确的交换吗?或者应该使用其他类型的交换?

当 websocket 进来时,我使用 spring-amqp 创建动态绑定(bind)

// create the RabbitMq queue and bind to it
String routingKey = MessageConstants.getRoutingKeyForUserRecommendationQueue(user);
Binding userRecommendationBinding = BindingBuilder.bind(userRecommendationsQueue).
to(directExchange).with(routingKey);
amqpAdmin.declareBinding(userRecommendationBinding);

最佳答案

Send message to a particular consumer in a queue

这是不可能的。连接到队列的任何消费者都有机会消费队列中的任何给定消息

I want a message sent to the direct exchange with the routing key {userId} to be received by only the particular app server where the binding has occured.

您可以通过为您的使用者创建独占/autoDelete 队列来实现此目的,并通过绑定(bind)将该使用者的所有消息定向到该队列。

Is a direct exchange the right exchange to use in this case?

直接交流或者话题交流都可以。直接交换稍微容易理解一点,但话题交换更灵活

关于RabbitMQ - 向队列中的特定消费者发送消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35783240/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com