SQL Service Broker 是否需要将消息路由到 msdb SQL 数据库?

Is routing messages to the msdb SQL database required in SQL Service Broker?

在我可以找到的使用 SQL Server Service Broker (here and here) 在服务器实例之间进行通信的示例中,routes 被创建到 MSDB 数据库是系统数据库之一。例如

use msdb;
go

create route [sender]
 with service_name = ‘sender’,
 address = ‘local’;
go

为什么我不在数据库中创建包含其余 Service Broker 对象(例如消息类型和服务)的路由?这是生产环境应该做的吗?

从网络收到的消息根据 msdb 的路由规则在 SQL 服务器实例中路由。这是约定俗成的,路由规则必须在某处声明,我们选择了 msdb。通常 msdb 包含 AutoCreatedLocal 路由,它使任何数据库中的所有服务都可寻址。可以删除此全局路由并为某些服务添加显式路由,这将使只有那些服务可寻址。不过,我没有看到这在实践中完成。大多数情况下,AutoCreatedLocal 路由会保留在原地,并将处理所有传入流量。

请注意,msdb 路由用于转发场景,其中一台机器从一个网络接受消息并将它们路由到另一个网络。