asp.net – 每个Web服务器的Azure Service Bus主题订阅
我正在努力将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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 流畅的NHibernate和存储库模式
- asp.net-mvc – 错误获取记录“LINQ to Entities无法识别方
- Asp.Net拒绝在某些页面上访问用户
- asp.net-mvc-2 – 带有数组/列表的ASP.NET MVC 2模型
- ASP.NET应用程序重新启动太多
- 从yield关键字看IEnumerable和Collection的区别
- ASP.NET Web应用程序(.NET Framework)与ASP.NET核心Web应用
- asp.net – VB.NET – 如何使用Active Directory将SID转换为
- asp.net-web-api – 如何从Web API响应中删除标头?
- asp.net-mvc – 是否可以在MVC控制器中的一个操作上禁用授权