我正在开发 azure MVC4 应用程序,我需要从 servicebus 读取消息,然后通过 IIS(通过 SignalR)更新在线用户。我想在 web 角色中运行一些工作角色类型的进程。寻找在 Web 角色本身中处理服务总线的最佳实践。
2 回答
要在 Web 角色中运行“工作角色”,您只需在 Web 项目中实现 RoleEntryPoint,就像在工作角色中一样。
请记住,这个“后台”进程 (WaIISHost.exe) 与您的 Web 应用程序进程 (w3wp.exe) 完全隔离运行。虽然这篇文章已经很老了,但它仍然非常清楚地代表了您的 Web 角色中运行的进程。
您可以将 SignalR 托管在“工作角色”中,而不是 IIS。并将消息从 web worker 传递到服务总线,并从工作进程中读取它们。
我认为最好的解决方案是使用服务总线的工作人员角色,您可以尝试使用服务总线队列的工作人员角色。
您可以从网络上获取所需的消息,通过服务总线队列将其发送给工作者角色,然后执行所需的过程。
之后,无论是使用队列还是服务队列,您都可以将结果发送回 webrole。
您可以查看此链接,我认为他正在做一些类似的事情http://middlewareinthecloud.com/2012/06/23/azureservice-bus-queues-in-worker-roles/
这是带有服务总线队列的工作角色的 MSDN URL http://msdn.microsoft.com/en-us/library/windowsazure/jj149831.aspx