①声明:
Dim g_cf As New ConnectionFactory
Dim g_con As IConnection = Nothing
Dim g_ch As IModel = Nothing
Dim is_consuming As Boolean = False
②初始化:
g_cf.UserName = Server_Interface.strUserName
g_cf.Password = Server_Interface.strPassword
g_cf.VirtualHost = Server_Interface.strVirtualHost
g_cf.Protocol = Protocols.FromEnvironment()
g_cf.HostName = Server_Interface.strHostName
g_cf.Port = Server_Interface.iPort
Try
g_con = g_cf.CreateConnection()
g_ch = g_con.CreateModel()
g_ch.QueueDeclare(Server_Interface.strQueueName, True, False, False, Nothing)
Catch ex As Exception
Console.WriteLine("Error in Crate Channel:" & ex.ToString())
End Try
g_con.AutoClose = True
③使用:
Dim consumer As New QueueingBasicConsumer(Me.g_ch)
Dim tag As String = Me.g_ch.BasicConsume(Server_Interface.strQueueName, False, consumer)
While (Me.is_consuming)
Try
If g_ch.IsOpen Then
Dim ret_obj = consumer.Queue.DequeueNoWait(Nothing)
If ret_obj Is Nothing Then
Continue While
End If
Dim e As RabbitMQ.Client.Events.BasicDeliverEventArgs =DirectCast(ret_obj,RabbitMQ.Client.Events.BasicDeliverEventArgs)
Dim props As IBasicProperties = e.BasicProperties
Dim msg As String = System.Text.UTF8Encoding.ASCII.GetString(e.Body)
Me.g_ch.BasicAck(e.DeliveryTag, False) '消息确认
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical, "载入错误")
Return
End Try
End While
④结束:
Me.is_consuming = False
g_ch.Dispose()
g_con.Dispose()