直接向BizTalk或通过MSMQ发送消息?

时间:2013-04-08 15:01:36

标签: c# wcf msmq biztalk messaging

这是我第一次使用BizTalk进行跨机器,异步,可靠的通信 我想知道有没有办法直接从一台机器发送消息到BizTalk队列,或者我必须使用本地MSMQ,后者又向BizTalk发送消息?

在C#中,是否有用于向BizTalk队列发送消息的绑定?
对于MSMQ,我知道有NetMsmqBinding。

干杯

更新

由于我引入了一些困惑,我会尝试解释一下,如果我错了,请纠正我。
据我所知,ESB实现了可用于可靠的异步通信(简称消息传递)的队列或消息通道的概念。现在,我很难将BizTalk放入这个概念中。如果BizTalk是ESB,如Sonic或TIBCO,有几十种对ESB概念的解释和相同数量的意见......
现在,据我所知,例如在实现JMS API的TIBCO中,本地客户端机器上没有队列或排队服务(例如MSMQ),但它们在TIBCO ESB和客户端应用程序中存在和配置我使用JMS API向这些队列发送消息 因此,当我想通过BizTalk与不同机器上的应用程序进行通信并且我想使用消息传递时,我将在本地计算机上使用MSMQ,MSMQ会将这些消息传输到BizTalk和下游的其他应用程序? 另外,我应该在哪里配置本地MSMQ和BizTalk之间的通信?我应该将BizTalk配置为侦听给定的MSMQ以获取新消息,还是应该在MSMQ本身上进行某些配置?

3 个答案:

答案 0 :(得分:5)

BizTalk通过称为适配器的人工制品与外界进行通信,这些人工制品可以通过各种消息传递协议为外界提供可见的端点。

有一个MSMQ适配器,它似乎能够从本地计算机或远程计算机上读取和发布到队列。我从来没有使用过它,所以我来自这个适配器上的docs读取位置并且随着我的进展而发现。我发现BizTalk文档特别难以导航,特别是因为很多微软链接现在都没有特别 - 我花了一点时间才找到我提到过的这些页面。如果你发现任何不明显的事情,请告诉我,因为我确信有一些我从未能找到的有用资源。

配置BizTalk以侦听队列:

  • 创建单向接收端口
  • 创建与该端口关联的单向接收位置
  • 将接收位置的传输类型设置为“MSMQ”
  • 点击“配置”
  • 指定要使用的凭据和队列名称(包括计算机名称,暗示它在远程队列上同样有效)
  • 将其他属性适当地设置为您的方案

应该就是它的全部。然后,发布到该队列应该会在该端口上接收消息,该消息会立即将其保留到消息框数据库中。您必须使用管道和/或地图进行一些处理,以便对消息执行任何有用的操作。

但是,您绝不仅限于MSMQ。可以使用pretty comprehensive list,BizTalk不会限制您使用任何特定的消息传递协议。您还可以使用所需的任何行为实现自定义适配器。为了更有效地回答您的问题,了解您的实际要求是什么有用 - 例如,客户端应用程序的用例是什么?

答案 1 :(得分:1)

BizTalk采用端口概念 - 接收和发送。这些端口利用许多不同的技术来读取和写入消息,但没有一种与其他BizTalk服务器直接通信。您需要利用像MSMQ甚至基本Web服务这样的东西 - 这取决于您 - 但是您需要在它们之间使用某种通信协议。

答案 2 :(得分:0)

“另外,我应该在哪里配置本地MSMQ和BizTalk之间的通信?我应该将BizTalk配置为收听给定MSMQ的新消息,还是应该在MSMQ本身上进行一些配置?”

答案: 您需要配置BizTalk以定义的间隔轮询相应的队列(可以在BizTalk中配置)。 在MSMQ中,您需要授予用户帐户的访问权限,该帐户将在轮询队列时使用。