【问题标题】:system.messaging queue frozen while message.receivesystem.messaging 队列在 message.receive 时冻结
【发布时间】:2012-06-15 13:25:13
【问题描述】:

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

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

事实并非如此。

【问题讨论】:

  • 您的 MessageQueue 是否被创建为事务性 MessageQueue?您也可以尝试使用MessageQueue.Receive(TimeSpan) 设置超时,您应该尝试MessageQueue.Peek()。还要检查队列中的安全设置。
  • 我将超时设置为 30 秒和 60 秒,然后超时。我不确定事务性消息队列,但编辑了我的帖子以显示队列是如何创建的。
  • 没关系,我刚刚刷新并看到消息已被删除。这是自动完成的吗?是否有可能以某种方式恢复它。
  • 是的,如果您Receive 消息,它会从队列中删除并且无法恢复。

标签: vb.net message-queue system.messaging


【解决方案1】:

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

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

如果还是无法接收到队列,建议手动创建队列。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-19
    • 2012-01-25
    • 1970-01-01
    • 1970-01-01
    • 2015-09-23
    • 2019-10-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多