连接到MSMQ,“正确”的方式?

时间:2011-12-13 15:40:10

标签: c winapi msmq

我正在尝试连接到MSMQ并发送一些消息。不幸的是,项目中有“先前的艺术”,如何做到这一点,我应该模仿它。此前应用程序连接的方式如下:

if (MSMQ in workgroup mode)
{
    connect via FormatName;
}
else
{
    if (connected to network)
        connect via PathName;
    else
        connect via GUID (as FormatName)
}

这一切真的有必要吗?不应该使用正确的FormatName来连接队列吗?

此外,通过调用在我的MSDN中标记为过时的NetGetDCName()来检测“连接到网络”,这让我对应用程序以这种方式连接的原因感到困惑。

TL; DR :以上是连接的逻辑:错误,过时还是正确?我可以在所有情况下使用FormatName连接来简化这个吗?

1 个答案:

答案 0 :(得分:4)

该代码通过查找域控制器来确定域是否可用。如果域不可用,则假定MSMQ在非域 - 或工作组 - 模式下工作。

域模式允许使用公共队列和路径名寻址。 工作组模式使用私有队列和格式名称寻址(尽管这是一种简化)。

因此,代码确实正在确定要使用的消息寻址模式。

如果您可以在所有情况下使用formatname,则没有足够的有关环境的信息。

干杯
John Breakwell