直接发送消息到BizTalk还是通过MSMQ发送?

4
这是我第一次使用BizTalk进行跨机器、异步、可靠的通信。我想知道是否有一种方法可以直接从一台机器发送消息到BizTalk队列,还是必须使用本地MSMQ,然后再将消息发送到BizTalk?
在C#中,是否有一种绑定方式用于向BizTalk队列发送消息?对于MSMQ,我知道有NetMsmqBinding。
谢谢!
更新:
由于我引入了一些混淆,我会尝试解释一下,请纠正我如果我错了。据我所知,ESB实现了队列或消息通道的概念,可用于可靠的异步通信(简称消息传递)。现在,我很难把BizTalk放入这个概念中。有关ESB概念的解释有数十种,以及关于BizTalk是否是ESB的同样数量的意见,例如Sonic或TIBCO...现在,据我所知,例如在实现JMS API的TIBCO中,本地客户端机器(例如MSMQ)上没有队列或排队服务,但它们存在并配置在TIBCO ESB上,从客户端应用程序中我使用JMS API将消息发送到这些队列。因此,当我想通过BizTalk与不同机器上的应用程序进行通信并且要使用消息传递时,我将在本地机器上使用MSMQ,并且MSMQ将将这些消息传输到BizTalk和下游其他应用程序?此外,我应在哪里配置本地MSMQ与BizTalk之间的通信?我应该配置BizTalk监听给定的MSMQ以获取新消息,还是在MSMQ本身上需要进行一些配置?

“直接通信”是什么意思? - Tom W
1
从C#应用程序向BizTalk队列发送消息 - dragan.stepanovic
你能更具体地解释一下你所说的“队列”是什么意思吗?我自己只是一个BizTalk的初学者,但据我所知,在BizTalk模型中没有特定的队列概念。我假设这里存在一些混淆的想法,我将在此进行解释,并且如果有更多细节出现,我将很乐意进行编辑。 - Tom W
3个回答

5
BizTalk通过称为适配器的工具与外部世界通信,这些适配器可以提供在广泛的消息传递协议上对外可见的端点。

有一个MSMQ适配器,它似乎能够从本地计算机或远程计算机读取和发布队列。我从未使用过它,所以我正在阅读有关此适配器的文档并边学边找资料。我发现BizTalk文档特别难以导航,特别是因为许多Microsoft链接现在没有特定的目标 - 找到我提到的这些页面花了一点时间。如果您发现任何不明显的东西,请告诉我,因为我肯定有一些有用的资源无法找到。

要配置BizTalk侦听队列:

  • 创建单向接收端口
  • 创建与该端口关联的单向接收位置
  • 将接收位置的传输类型设置为“MSMQ”
  • 单击“配置”
  • 指定要使用的凭据和队列名称(其中包括机器名称,这意味着它同样适用于远程队列)
  • 根据您的场景适当地设置其他属性

那就是全部了。发布到该队列应该会导致在该端口上接收到一条消息,该消息立即将其持久化到消息框数据库中。您将需要使用管道和/或映射进行一些处理,以便对消息执行有用的操作。

但是,您并不局限于 MSMQ。一个相当全面的列表可供参考,BizTalk 不会限制您使用任何特定的消息协议。您还可以实现具有所需行为的自定义适配器。为了更有用地回答您的问题,了解客户端应用程序的真实需求 - 例如,客户端应用程序的用例是什么?


我已经尝试在问题的更新中更加具体。 - dragan.stepanovic
谢谢。这让情况变得更清晰了一些。我相信我已经发布的内容回答了你的问题 - 你可以使用一个带有MSMQ适配器的接收端口来从本地或远程机器上的队列接收消息 - 尽管我对如何设置这些细节还有点模糊。 - Tom W

1

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


我已经尝试在问题的更新中更加具体。 - dragan.stepanovic

0
“另外,我应该在哪里配置本地MSMQ和BizTalk之间的通信?我应该配置BizTalk监听给定的MSMQ以获取新消息,还是MSMQ本身需要进行某些配置呢?”
回答: 您需要配置BizTalk以在定义的时间间隔内轮询相应的队列(可以在BizTalk中配置)。 在MSMQ中,您需要授予访问权限给将用于轮询队列的用户帐户。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接