【问题标题】:MSMQ private queue issue between two domains两个域之间的 MSMQ 专用队列问题
【发布时间】:2011-07-09 21:32:33
【问题描述】:

我的本​​地机器在域 A 上,我的简单控制台应用程序尝试将消息放到域 B 上的远程机器的专用队列中。在传出队列中,状态显示为已连接,但消息似乎没有走。在接收端,私有队列似乎没有接收到消息。私有队列的权限设置为所有人、匿名登录和系统的完全控制。

【问题讨论】:

  • 你有什么例外吗?我假设您的控制台应用程序在域 A 的域帐户下运行?域 A 和域 B 之间是否存在信任关系?
  • 不会有任何异常;消息已进入传出队列,因此 send() 100% 成功。

标签: msmq


【解决方案1】:

您可以先尝试为 domainb 模拟用户(请参阅http://blogs.msdn.com/b/joncole/archive/2009/09/21/impersonation-code-in-c.aspx

然后调用远程队列

虽然不能 100% 确定这是否可行。

【讨论】:

  • 会使用 帮助吗?
  • 如果是权限问题,MSMQ 将丢弃传递的消息。此外,安全性是开放的,因此不是权限问题。更有可能是确认没有从远程机器返回以允许消息流动。需要更多细节 - 队列是事务性的,等等。
  • 队列不是事务性的,您还希望我提供什么其他信息?
  • 是不是因为信任没有发生消息没有发送或者没有收到确认。但我的传出队列只是说“已连接并等待传输”。
  • 不,信任只会影响访问 - 消息将被传递或丢弃。没有连接但未交付的困境。查看网络跟踪可能会有所帮助 - 可能是防火墙配置不当,例如,阻止了数据包的正常流动。
【解决方案2】:

这和NAT有关,如果接收者机器在NAT之后,你不能向它发送MQ。 解决方法是在接收方机器上指定一个公共 IP 并使用直接 TCP 地址格式,即 'FormatName:DIRECT=TCP:{remoteIP}\private$\{QueueName}'

例如:

格式名称:DIRECT=TCP:200.201.202.203\private$\mqReceiverQueue

【讨论】:

    猜你喜欢
    • 2011-10-22
    • 1970-01-01
    • 2017-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-26
    • 1970-01-01
    • 2018-09-02
    相关资源
    最近更新 更多