gpt4 book ai didi

MSMQ 消息到达远程服务器后消失

转载 作者:行者123 更新时间:2023-12-01 19:40:10 24 4
gpt4 key购买 nike

我必须在同一域中的两个服务器之间创建一个 MSMQ 消息传递机制,SenderServer (MS Server 2012) 和 ReceiverServer (MS服务器 2008 R2)。

我在 ReceiverServer 中创建了一个私有(private)事务队列 .\private$\receiver ,我向系统和管理员授予了接收(和查看)消息的权限。

然后,我创建了一个客户端应用程序,该应用程序使用以下代码创建消息并将其转发到队列:

MessageQueue queue = new queue("FormatName:Direct=OS:ReceiverServer\private$\receiver");
Message message = new Message();
message.Body = "myMessage";

using (MessageQueueTransaction tx = new MessageQueueTransaction())
{
tx.Begin();
queue.Send(message, "myLabel", tx);
tx.Commit();
}

在部署应用程序之前,我在我的计算机 (Windows 7) 上对其进行了测试,该计算机正确创建了传出队列 Direct=OS:ReceiverServer\private$\receiverState:ConnectedConnection History:Connection is ready to transfer messages 。消息被正确发送到ReceiverServer并放置在\private$\receiver中队列。 End2End log每条消息的 ReceiverServer 都会记录两个事件:

  1. 消息通过网络发送(EventId:4)
  2. 消息 ID CN=msmq, CN=[mymachinename], CN=Computers, DC=[domain], DC=[other]已放入队列ReceiverServer\private$\receiver (事件ID:1)

然后我使用相同的代码在 SenderServer 中使用客户端应用程序。服务器正确创建传出队列 Direct=OS:ReceiverServer\private$\receiverState:ConnectedConnection History:Connection is ready to transfer messages ,我可以看到消息正在排队并被发送,但我没有在远程 ReceiverServer 队列中收到它们 .\private$\receiver 。如果我检查 ReceiverServerEnd2End 事件日志,我只会看到第一条消息(消息通过网络发送(EventId:4)),但该消息未放入队列中.

我关闭了两台计算机的防火墙,更改了队列的授权设置,并尝试了以下队列端点:

  • FormatName:Direct=OS:[IPv6 address]\private$\receiver
  • FormatName:Direct=TCP:ReceiverServer\private$\receiver
  • FormatName:Direct=TCP:[IPv6 address]\private$\receiver

没有运气。微软的故障排除过程和文档非常笼统和简单,因此我决定在这里提问,因为对我来说这是一个死胡同。

最佳答案

发件人域帐户需要对远程队列具有以下权限:发送、获取权限、获取属性

这些机器在同一个域中吗?如果没有,您可能需要向名为 ANONYMOUS LOGON 的本地用户授予上述权限

关于MSMQ 消息到达远程服务器后消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28071839/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com