Imports System Imports System.Collections.Generic Imports System.Diagnostics Imports System.Linq Imports System.Net Imports System.Threading Imports Microsoft.Azure Imports Microsoft.ServiceBus Imports Microsoft.ServiceBus.Messaging Imports Microsoft.WindowsAzure.ServiceRuntime Public Class WorkerRole Inherits RoleEntryPoint ' 队列的名称 Const QueueName As String = "ProcessingQueue" ' QueueClient 是线程安全的。建议你进行缓存, ' 而不是针对每一个请求重新创建它 Dim Client As QueueClient Dim CompletedEvent = New ManualResetEvent(False) Public Overrides Sub Run() Trace.WriteLine("正在开始处理消息") ' 启动消息泵,并且将为每个已收到的消息调用回调,在客户端上调用关闭将停止该泵。 Client.OnMessage(Sub(receivedMessage As BrokeredMessage) Try ' 处理消息 Trace.WriteLine("正在处理 Service Bus 消息: " + receivedMessage.SequenceNumber.ToString()) Catch ' 在此处处理任何处理特定异常的消息 End Try End Sub) CompletedEvent.WaitOne() End Sub Public Overrides Function OnStart() As Boolean ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 ' 设置最大并发连接数 ServicePointManager.DefaultConnectionLimit = 12 ' 如果队列不存在,则创建队列 Dim connectionString As String = CloudConfigurationManager.GetSetting("Microsoft.ServiceBus.ConnectionString") Dim namespaceManager As NamespaceManager = namespaceManager.CreateFromConnectionString(connectionString) If (Not namespaceManager.QueueExists(QueueName)) Then namespaceManager.CreateQueue(QueueName) End If ' 获取客户端以使用队列 Client = QueueClient.CreateFromConnectionString(connectionString, QueueName) Return MyBase.OnStart() End Function Public Overrides Sub OnStop() ' 关闭与 Service Bus 队列的连接 Client.Close() CompletedEvent.Set() MyBase.OnStop() End Sub End Class