system.messaging消息未到达

时间:2014-07-31 16:27:09

标签: .net msmq system.messaging

我的留言未到达目的地。我没有收到错误。即使在那里打开了日记功能,它也不会出现在接收端的日志中。目标队列的权限设置为Everyone完全控制。目的地msmq服务的诊断显示msmq ping是好的。其他应用程序已在本月早些时候成功写入此队列。它出现在我的日记中(发送结束)。它没有出现在我的结尾或接收端的死信或交易死信中。我仔细检查了队列名称。我发现没有Google点击或其他SO问题。我广泛搜索了“system.messaging”问题,或“system.messaging”问题,以及其他一些更具体的搜索。

在这种特殊情况下,我使用的是ActiveX Formatter。

  Public Shared Sub Send(QueuePath As String, Label As String, Body As String, FormatterType As FormatterTypes)

    Dim MessageQueue As MessageQueue
    Dim MessageQueueTransaction As New MessageQueueTransaction
    Try
      If MessageQueue.Exists(QueuePath) Then 
        'creates an instance MessageQueue, which points 
        'to the already existing MessageQueue
        MessageQueue = New MessageQueue(QueuePath)
        If Not MessageQueue.CanWrite Then Exit Sub
      Else
        Throw New ArgumentException(String.Format("Queue does not exist '{0}'", QueuePath), "QueuePath")
      End If
      Dim Formatter As IMessageFormatter
      Select Case FormatterType
        Case FormatterTypes.ActiveX
          Formatter = New ActiveXMessageFormatter
        Case FormatterTypes.Binary
          Formatter = New BinaryMessageFormatter
        Case FormatterTypes.Xml
          Formatter = New XmlMessageFormatter
      End Select
      Using Message As New Message(Body, Formatter)
        Message.Label = Label
        Message.AcknowledgeType = AcknowledgeTypes.FullReachQueue
        Message.UseJournalQueue = True
        Message.UseDeadLetterQueue = True
        MessageQueueTransaction.Begin()
        MessageQueue.Send(Message, MessageQueueTransaction)
        MessageQueueTransaction.Commit()
      End Using

    Catch ex As MessageQueueException
      MessageQueueTransaction.Abort()
    Finally
      MessageQueueTransaction.Dispose()
    End Try
  End Sub

1 个答案:

答案 0 :(得分:1)

接收处有消息,但在日记队列中无处可见。

清除日记队列,最终可以看到来自此应用的新消息。

该期刊已启用且不受大小限制,因此我不知道为什么它拒绝显示新消息。我认为这是一个单独的问题。