【发布时间】: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