0

这是我第一次使用这个消息传递库并使用一些示例代码来实现它。我第一次运行它时它运行良好,但我突然停止了代码,因为我的解析方法似乎错误。因此,当我重新启动它时,代码冻结在以下行:

message = q.Receive()

消息队列是否可能损坏或什么?我检查了服务器管理器,看起来队列仍然存在,消息数 =1 和以前一样。这是我的其余代码:

 If MessageQueue.Exists(".\private$\TwitterQueue") Then
        q = New MessageQueue(".\private$\TwitterQueue")
    Else
        'GS - If there is no queue then we're done here
        Console.WriteLine("Queue has not been created!")
       Return
 End If
 Try
    While True
            'GS - Try and pull back the next message
            Dim message As Message
            Try
                message = q.Receive()
                message.Formatter = New XmlMessageFormatter(New [String]() {"System.String"})
                 ProcessMessage(message)

             Catch

             end try
End While

编辑:

如何创建队列:

 Dim q As MessageQueue = If((MessageQueue.Exists(".\private$\TwitterQueue")), New MessageQueue(".\private$\TwitterQueue"), MessageQueue.Create(".\private$\TwitterQueue"))

以及如何使用:

Dim msg As New Message(responseData)
q.Send(msg)

并检查它是否是事务性的;

If q.Transactional = True Then
                    Thread.Sleep(2000)
                End If

事实并非如此。

4

1 回答 1

0

如果您尝试从代码后面创建队列,您可以尝试设置权限

If MessageQueue.Exists(".\private$\TwitterQueue") Then
        q = New MessageQueue(".\private$\TwitterQueue")
        q.SetPermissions("Everyone", MessageQueueAccessRights.FullControl, AccessControlEntryType.Allow)
    Else
        'GS - If there is no queue then we're done here
        Console.WriteLine("Queue has not been created!")
       Return
 End If

如果仍然无法接收队列,我建议手动创建队列。

于 2015-01-26T10:20:19.383 回答