代码之家  ›  专栏  ›  技术社区  ›  juan

通过主机文件连接到远程队列

  •  3
  • juan  · 技术社区  · 16 年前

    我还有通过配置文件使用的队列(它们是远程队列)的名称,格式如下:

    FormatName:Direct=SERVER_NAME\Private$\MY_QUEUE
    

    我的问题是,服务器名称在不同的环境中是不同的,我希望将该问题委托给服务器(即:对于数据库,我在所有3台服务器中都有同名的别名,它们都指向实际的db服务器)

    队列不存在,或者您没有足够的权限执行该操作。

    我试过了 FormatName:Direct , FormatName:OS ,及 FormatName:TCP

    目标是拥有一个可在所有环境中工作的配置文件。

    3 回复  |  直到 16 年前
        1
  •  3
  •   juan    16 年前

    我们还在我们的环境中使用一个hosts文件,结果发现(很难)MSMQ不支持它。 我们的解决方案是在MSMQ上使用抽象层(ITransport),并让该层用ip地址替换主机名(可能在主机文件中找到)。使用 Dns class .

        2
  •  2
  •   Igal Serban    16 年前

    失败的原因是msmq使用kerberos身份验证。验证交换双方的身份。你方正在使用“错误”的名称访问服务器。因此,当服务器尝试与您(客户端)进行身份验证时。Windows可以“告诉”这不是您要找的服务器。因此,它无法通过身份验证。

    可能有一些方法可以避免这种情况。但这将危及安全。我建议将目标服务器的三个名称(dev、qa和production)放在配置文件中。然后用一些参数在它们之间进行选择,比如域名、用户名、计算机名或者其他类似的东西,这些参数在不同的环境中也是不同的。

        3
  •  0
  •   Kjell-Åke Andersson    16 年前

    FormatName:Direct=OS:SERVER_NAME\Private$\MY_QUEUE
    

    或者,如果您想改用IP地址:

    FormatName:Direct=TCP:XXX.XXX.XXX.XXX\Private$\MY_QUEUE