将消息从多个服务器发送到一个Service Broker Queue

本文关键字:一个 Service Queue Broker 消息 服务器 | 更新日期: 2023-09-27 18:09:22

我有几个SQL服务器,它们的数据库支持两种不同的应用程序。我需要从每个数据库中捕获对类似数据的更改,但要按顺序处理。Service Broker符合要求,我只是有几个实现问题。

我已经创建了"第三个"数据库来扩展这两个应用程序。在这个数据库上,我启用了服务代理,创建了消息模式、契约、服务和队列。

如果我想将这种类型的//mysite.com/extensions/message消息从LEGACYSERVER.Database发送到EXTENSIONSERVER.Database上的ExtensionsQueue,我是否需要在每个数据库中运行SQL语句来创建这些片段(模式,契约,消息等),我想从这个队列进行通信?看来,我至少需要每个数据库中的消息模式来强制完整性。

假设我需要(这似乎是有意义的),我是否应该将每个服务器上的服务,队列等命名为相同的,或者这会导致问题?例如,我是否应该将EXTENSIONSERVER上的服务命名为//extensionserver/extensions/message//legacyserver/extensions/message ?我甚至需要在LEGACYSERVER上创建一个服务和队列吗?或者像这样的路由会照顾它吗?

CREATE ROUTE 
WITH 
  SERVICE_NAME = '//extensionserver/extensions/message',
  ADDRESS = 'extensionserver:1433'

将消息从多个服务器发送到一个Service Broker Queue

这实际上是一个相当好的设置。最后,我基本上遵循了这个教程。

它没有提到的一个关键点是外部数据库实例的路由需要在MSDB数据库中。