代码之家  ›  专栏  ›  技术社区  ›  alex.s

Azure服务总线,如何一次接收一条消息?

  •  0
  • alex.s  · 技术社区  · 6 年前

    是否有人可以帮助修改此代码以一次只接收一条消息?

        Private Sub Button_SEND_Click(sender As Object, e As EventArgs) Handles Button_SEND.Click
        Dim client As QueueClient = QueueClient.CreateFromConnectionString(My.Settings.connString, My.Settings.queueName)
        Dim message As New BrokeredMessage(TextBox_M2SEND.Text.Trim)
        client.Send(message)
        client = Nothing : message = Nothing
    End Sub
    
    ' reading the message
    Private Sub Button_READ_Click(sender As Object, e As EventArgs) Handles Button_READ.Click
        Dim client As QueueClient = QueueClient.CreateFromConnectionString(My.Settings.connString, My.Settings.queueName)
        Dim options As New OnMessageOptions()
    
        options.AutoComplete = False
        'options.AutoRenewTimeout = TimeSpan.FromMinutes(1)
        client.OnMessage(Function(message)
                             Try
                                 ' Process message from subscription.
                                 Console.WriteLine(vbLf & "**High Messages**")
                                 Console.WriteLine("Body: " + message.GetBody(Of String)())
                                 Console.WriteLine("MessageID: " + message.MessageId)
                                 ' Console.WriteLine("Message Number: " + message.Properties("MessageNumber"))
    
                                 ' Remove message from subscription.
                                 message.Complete()
                             Catch generatedExceptionName As Exception
                                 ' Indicates a problem, unlock message in subscription.
                                 message.Abandon()
                             End Try
    
                         End Function, options)
    
        client = Nothing : options = Nothing
    End Sub
    

    我可以存储多条消息,但当我执行Button\u Read时,它会将所有消息都拉出来。 如何一次只拉一个?

    非常感谢。 亚历克斯。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Mikhail Shilkov    6 年前

    打个电话就行了 client.Receive() 方法提取单个消息。