加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 每个Web服务器的Azure Service Bus主题订阅

发布时间:2020-12-16 07:41:48 所属栏目:asp.Net 来源:网络整理
导读:我正在努力将SignalR体验集成到Azure基础架构中. 基本上,用户会在网站上采取一些操作,触发Web服务器上的函数调用(通过SignalR).处理该请求可能需要一些时间,用户可以通过单击发送数十个或数百个请求.我正在创建一个Service Bus队列来将这些任务发送给WebJob
我正在努力将SignalR体验集成到Azure基础架构中.

基本上,用户会在网站上采取一些操作,触发Web服务器上的函数调用(通过SignalR).处理该请求可能需要一些时间,用户可以通过单击发送数十个或数百个请求.我正在创建一个Service Bus队列来将这些任务发送给WebJob / Worker来处理它们,一旦它们准备好,它们就会将它发送回另一个队列(响应队列).

也就是说,为了提供令人敬畏的用户体验,如果用户仍然处于与以前相同的页面上,并且如果处理已准备好,我希望它在这些任务完成时实时更新它们.如果用户固定在一个前端盒子上(由于SignalR WebSocket连接),这应该是微不足道的,但事实并非如此,因此不同的前端可能需要处理该响应消息并通过SignalR调用浏览器.

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

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

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

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

2)我需要动态地创建N个订阅(每个Web服务器一个),这似乎很奇怪.如果服务器死了又永远不会回来会怎么样?我有一个订阅,不再有订阅者?

基本上,我只是想创建一个简单的发布者 – 订阅者模式,我可以在他们上线时拥有N个动态订阅者(听众).

解决方法

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

以下是Scheduler Agent Supervisor消息传递设计模式的一个很好的解释:

Scheduler Agent Supervisor pattern

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读