【问题标题】:Sending message directly to BizTalk or via MSMQ?直接向 BizTalk 或通过 MSMQ 发送消息?
【发布时间】:2013-03-30 17:39:03
【问题描述】:

这是我第一次使用 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 本身上进行一些配置?

【问题讨论】:

  • “直接沟通”是什么意思?
  • 将消息从 c# 应用程序发送到 BizTalk 上的队列
  • 你能更具体地说明你所说的“队列”是什么意思吗?我自己只是 BizTalk 的新手,但据我所知,BizTalk 模型中没有特定的队列概念。我将假设存在一些混淆的想法来回答,我将在那里解决,如果有更多细节出现,我会很高兴地编辑。

标签: c# wcf msmq biztalk messaging


【解决方案1】:

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

有一个 MSMQ 适配器,它似乎能够从本地计算机或远程计算机上的队列中读取和发布。我从来没有使用过它,所以我是从阅读此适配器上的docs 的位置而来的,并在我进行过程中发现。我发现 BizTalk 文档特别难以导航,尤其是现在很多微软链接都无处可去——我花了一些时间才找到我提到的这些页面。如果您发现任何不明显的东西,请告诉我,因为我确信有一些有用的资源我从未找到过。

将 BizTalk 配置为侦听队列:

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

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

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

【讨论】:

  • 我试图在更新问题时更加具体。
  • 谢谢。这让情况更清楚了一些。我相信我已经发布的内容回答了您的问题 - 您可以使用带有 MSMQ 适配器的接收端口从本地或远程机器上的队列接收消息 - 尽管我自己对如何处理的细节有点模糊正是你设置的。
【解决方案2】:

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

【讨论】:

  • 我试图在问题的更新中更加具体。
【解决方案3】:

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

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

【讨论】:

    猜你喜欢
    • 2017-04-27
    • 2017-05-16
    • 2011-12-01
    • 2018-02-02
    • 2012-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多