首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正在写入远程MSMQ

正在写入远程MSMQ
EN

Stack Overflow用户
提问于 2011-06-10 23:34:57
回答 4查看 28.8K关注 0票数 26

好的,这是一个非常简单和基本的问题。如果我在windows计算机A上有一个想要写入windows计算机B上的队列的应用程序,我是否需要在计算机A上安装MSMQ (即使那里没有队列)?我刚刚开始在我的应用程序中使用队列,并试图弄清楚一些基本原理。

谢谢

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-06-11 00:11:14

是的,您需要在本地安装MSMQ才能写入远程队列。如果您正在写入私有队列,请查看this page,其中包含有关如何格式化队列名称的有用信息。如果要写入远程事务队列,则需要确保正确指定(第5点)

这是文章正文:

  1. When使用远程队列时,machinename\private$\queuename格式的队列名称不起作用。这会导致"invalid queue path“错误。
  2. 队列名称必须作为FormatName:Direct=OS:machinename\\private$\\queuename提及。

这是必要的,因为队列访问是在内部使用格式名称语法完成的。另一个友好的表示被转换为FormatName,然后使用。在处理远程队列时,除非有AD来解析队列名称,否则友好名称将不起作用。有关详细信息,请查看文档。

例如。

("FormatName:Direct=OS:machinename\private$\queue");Atul");

  • Further = MessageQueue rmQ = MessageQueue rmQ.Send("sent to regular queue -(“FormatName:Direct=OS:machinename\private$\queue”);to previous point,请注意,MessageQueue区分大小写。如果您提到前面的字符串为FORMATNAME:Direct=OS:machinename\\private$\\queuename,它将不起作用。令人惊讶的是,在这种情况下没有抛出错误。字符串的"FormatName“部分似乎是唯一区分大小写的部分。其他的可以以不同的大小写出现。例如。你可以写“直接”。

  • 如果要使用机器的IP地址,则语法为FormatName:Direct=TCP:ipaddress\\private$\\queuename

例如。

MessageQueue rmQ = MessageQueue MessageQueue rmQ.Send("sent to regular queue -Atul“);

  • 您在代码中创建的队列实例的事务属性应该与您试图将消息发送到的队列的事务属性相匹配。因此,在前面的示例中,我将消息发送到非事务性队列。若要发送到事务性队列,代码应为

发送队列=新队列("FormatName:Direct=OS:machinename\private$\queue");rmTxnQ.Send("sent to Txn rmTxnQ - Atul",MessageQueueTransactionType.Single);

如果事务属性不匹配,消息将不会被传递。同样令人惊讶的是,我没有收到任何错误,消息只是disappeared

  • Finally,当您发送消息到远程队列时,会在您自己的机器上创建一个临时的传出队列。这在远程队列不可用的情况下使用。如果转到“计算机管理控制台”(compmgmt.msc),展开“服务和应用程序”/“消息队列”/“传出队列”,您将看到这些队列。控制台右侧应显示详细信息,包括下一个hop(s).

的状态(已连接或未连接)和IP地址

票数 49
EN

Stack Overflow用户

发布于 2011-06-11 21:19:22

所有MSMQ通信都需要在两端都有一个MSMQ队列管理器。使用MSMQ的应用程序与它们的本地队列管理器通信,后者为它们做这项工作。使用MSMQ的应用程序不能直接与任何队列通信,无论是本地队列还是远程队列。

票数 8
EN

Stack Overflow用户

发布于 2011-06-11 18:37:02

另一种方法(而不是在运行客户端的本地机器上安装MSMQ )是实现一个从MSMQ队列获取消息的WCF服务。在这种情况下,您的远程客户端只需指定远程服务端点,它就可以直接写入远程队列。您还必须注意远程队列上的安全性设置是否正确。

我认为这将是实现基于队列的通信的更好方法。这是一个简短的答案,但如果您感兴趣,我将很乐意扩展(我注意到您对另一个答案非常满意:)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6308668

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档