【问题标题】:Monolog conversations in SQL Service Broker 2008SQL Service Broker 2008 中的独白对话
【发布时间】:2011-02-18 10:06:41
【问题描述】:

我有一个场景,我需要处理(在 SQL Server 中)作为文件夹中的 .xml 文件实时传递的消息。

我开始调查 SQL Service Broker 以满足我的排队需求。基本上,我希望 Service Broker 提取我的 .xml 文件,并在它们到达文件夹时将它们放入队列中。但是,SQL Service Broker 不支持“独白”对话,至少在当前版本中不支持。它只支持发起者和目标服务之间的对话。

我可以使用 MSMQ,但我需要维护两件事 - MSMQ 中用于文件处理的 .Net 代码和 SQL Server T-SQL 存储过程。我还有什么选择?

谢谢。

【问题讨论】:

  • 我不确定你为什么需要独白对话。您始终可以使用对话来模拟独白。你能澄清一下你到底想达到什么目标吗?
  • 我无法控制输入消息的来源。它们被放在服务器上的目录文件夹中。我的想法是在我的服务之间进行一次独白对话,该服务会提取 xml 文件并在 sql server 中处理它们。如果我对输入消息的来源有一定程度的控制,我可以要求他们将消息直接发布到我在 sql 服务代理中的发起程序队列中。但是,事实并非如此。消息以 .xml 格式发送到目录文件夹中。

标签: sql-server-2008 service-broker


【解决方案1】:

您需要利用 FileSystemWatcher 来监控目录。您的实现可以简单地响应新文件并使用事件对文件的处理进行排队(如果这可以让您的生活变得更好,可以在 Service Broker 中实现)。

正如其他发帖人所提到的,你真的把事情搞反了:Service Broker 响应消息;必须有人发送消息让它回复。它不是一个通用的服务宿主进程。根据功能集和横向扩展/纵向扩展要求,您可能希望查看 BizTalk,因为这是用它实现的一种非常常见的模式,并且它有大量的基础架构来支持所有正交的“业务成本”组件来实现事情是可靠的,实际工作。

当您自己编写/调试完所有必需的代码后,您通常会发现您的花费超过了许可成本。不过,这一切都与需求有关。

【讨论】:

    【解决方案2】:

    没有。您的整个想法被打破了 - 因为您必须从目录中获取文件,所以使用服务代理根本没有意义。你需要一个监听进程,所以你也可以让监听进程来做处理。

    【讨论】:

      猜你喜欢
      • 2013-09-07
      • 2010-11-21
      • 2012-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-14
      相关资源
      最近更新 更多