这是我第一次使用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本身上进行某些配置?
答案 0 :(得分:5)
BizTalk通过称为适配器的人工制品与外界进行通信,这些人工制品可以通过各种消息传递协议为外界提供可见的端点。
有一个MSMQ适配器,它似乎能够从本地计算机或远程计算机上读取和发布到队列。我从来没有使用过它,所以我来自这个适配器上的docs读取位置并且随着我的进展而发现。我发现BizTalk文档特别难以导航,特别是因为很多微软链接现在都没有特别 - 我花了一点时间才找到我提到过的这些页面。如果你发现任何不明显的事情,请告诉我,因为我确信有一些我从未能找到的有用资源。
配置BizTalk以侦听队列:
那应该就是它的全部。然后,发布到该队列应该会在该端口上接收消息,该消息会立即将其保留到消息框数据库中。您必须使用管道和/或地图进行一些处理,以便对消息执行任何有用的操作。
但是,您绝不仅限于MSMQ。可以使用pretty comprehensive list,BizTalk不会限制您使用任何特定的消息传递协议。您还可以使用所需的任何行为实现自定义适配器。为了更有效地回答您的问题,了解您的实际要求是什么有用 - 例如,客户端应用程序的用例是什么?
答案 1 :(得分:1)
BizTalk采用端口概念 - 接收和发送。这些端口利用许多不同的技术来读取和写入消息,但没有一种与其他BizTalk服务器直接通信。您需要利用像MSMQ甚至基本Web服务这样的东西 - 这取决于您 - 但是您需要在它们之间使用某种通信协议。
答案 2 :(得分:0)
“另外,我应该在哪里配置本地MSMQ和BizTalk之间的通信?我应该将BizTalk配置为收听给定MSMQ的新消息,还是应该在MSMQ本身上进行一些配置?”
答案: 您需要配置BizTalk以定义的间隔轮询相应的队列(可以在BizTalk中配置)。 在MSMQ中,您需要授予用户帐户的访问权限,该帐户将在轮询队列时使用。