gpt4 book ai didi

asp.net - 每个 Web 服务器的 Azure 服务总线主题订阅

转载 作者:行者123 更新时间:2023-12-03 17:42:49 24 4
gpt4 key购买 nike

我正在努力将 SignalR 体验集成到 Azure 基础架构中。

基本上,用户在网站上执行一些操作,将触发 Web 服务器上的函数调用(通过 SignalR)。处理该请求可能需要一些时间,并且用户可能只需单击一次即可发送数十或数百个请求。我正在创建一个服务总线队列,将这些任务发送到 WebJob/Worker 来处理它们,一旦它们准备好,它们就会将其发送回另一个队列(响应队列)。

也就是说,为了提供出色的用户体验,如果用户仍然像以前一样在同一页面上,并且如果处理已准备好,我希望它在这些任务完成时为他们实时更新。如果用户被固定到单个前端框(由于 SignalR WebSocket 连接),那么这应该是微不足道的,但事实并非如此,因此不同的前端可能需要处理该响应消息并通过 SignalR 调用浏览器。 p>

当我在第一个队列中发布消息时,我将包含 SignalR ConnectionId。响应完成后,该 ConnectionId 会包含在响应消息中,这使我有机会进行调用。

HubContext.Clients.Client(connectionId).AddItemsResult(response);

我的问题是关于服务总线主题——或者我不完全理解的另一个解决方案。我需要向每个 Web 服务器通知处理的每个响应,因为我无法确定哪个 Web 服务器将实际向客户端调用 SignalR。

1) 服务总线主题是正确的方法吗?

2) 看起来很奇怪,我需要动态创建 N 个订阅(每个 Web 服务器一个)。如果服务器死掉并且再也没有回来会发生什么?我的订阅已经没有订阅者了?

基本上,我只想创建一个简单的发布者-订阅者模式,在其中我可以在 N 个动态订阅者(监听器)上线时拥有它们。

最佳答案

您需要实现某种状态存储,该状态存储会在每个用户请求的处理完成时进行更新。然后让客户端定期轮询以获取使用请求的状态存储的最新状态。此外,您还需要维护该状态存储,以便用户可以判断他们的请求是否已在多个用户/客户端 session 中完成处理。 Scheduler Agent Supervisor 消息传递设计模式应该可以帮助您实现您想要构建的内容。

以下是对 Scheduler Agent Supervisor 消息传递设计模式的精彩解释:

Scheduler Agent Supervisor pattern

关于asp.net - 每个 Web 服务器的 Azure 服务总线主题订阅,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31931420/

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