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) 在服务器实例之间进行通信的示例中,route
s 被创建到 MSDB
数据库是系统数据库之一。例如
use msdb;
go
create route [sender]
with service_name = ‘sender’,
address = ‘local’;
go
为什么我不在数据库中创建包含其余 Service Broker 对象(例如消息类型和服务)的路由?这是生产环境应该做的吗?
从网络收到的消息根据 msdb 的路由规则在 SQL 服务器实例中路由。这是约定俗成的,路由规则必须在某处声明,我们选择了 msdb。通常 msdb 包含 AutoCreatedLocal 路由,它使任何数据库中的所有服务都可寻址。可以删除此全局路由并为某些服务添加显式路由,这将使只有那些服务可寻址。不过,我没有看到这在实践中完成。大多数情况下,AutoCreatedLocal 路由会保留在原地,并将处理所有传入流量。
请注意,msdb 路由用于转发场景,其中一台机器从一个网络接受消息并将它们路由到另一个网络。
在我可以找到的使用 SQL Server Service Broker (here and here) 在服务器实例之间进行通信的示例中,route
s 被创建到 MSDB
数据库是系统数据库之一。例如
use msdb;
go
create route [sender]
with service_name = ‘sender’,
address = ‘local’;
go
为什么我不在数据库中创建包含其余 Service Broker 对象(例如消息类型和服务)的路由?这是生产环境应该做的吗?
从网络收到的消息根据 msdb 的路由规则在 SQL 服务器实例中路由。这是约定俗成的,路由规则必须在某处声明,我们选择了 msdb。通常 msdb 包含 AutoCreatedLocal 路由,它使任何数据库中的所有服务都可寻址。可以删除此全局路由并为某些服务添加显式路由,这将使只有那些服务可寻址。不过,我没有看到这在实践中完成。大多数情况下,AutoCreatedLocal 路由会保留在原地,并将处理所有传入流量。
请注意,msdb 路由用于转发场景,其中一台机器从一个网络接受消息并将它们路由到另一个网络。