SQL Server消息代理 - 外部激活

时间:2009-09-08 08:52:17

标签: sql-server msmq service-broker messagebroker

我在受限制的网络中有一个Sql Server。我需要以某种方式从外部获取数据。

我想利用Message Broker。我的想法是外部数据库在队列上放置一条消息,然后我需要一个位于受限局域网内的服务来监听(轮询?)这些消息,然后对它们采取行动。 我不能让外部队列启动正常的代理会话进入受限制的LAN。

我的问题是,我应该看看代理外部激活器是否位于受限制的局域网内并收听新消息然后对其采取行动?有没有人有这方面的经验。外部激活器的文档/示例在实际上非常薄弱,但消息代理尚不支持独白。

msmq是更好的选择吗?

1 个答案:

答案 0 :(得分:2)

我的建议是允许Service Broker将消息一直传递到受限局域网内的SQL Server实例中。这将要求受限制的LAN允许进行连接(允许内部服务器监听和接受)。 MSMQ也不例外,MSMQ端口必须在受限制的LAN中打开。

如果你想在受限制的局域网内部使用专用进程来获取内部数据,那么你必须确保外部服务器'get'和内部服务器写入之间的事务一致性:这两个操作必须注册到需要允许分布式事务和DTC协议本身渗透到受限LAN中。因此,某些端口仍需要在受限制的LAN中打开。

您的LAN安全设计人员需要了解的是Service Broker连接 Transact-SQL连接。 Service Broker使用仅允许交换Service Broker消息的专用协议。所有流量都使用RC4或AES加密进行加密和保护。 SSB密码术符合FIPS标准。允许Service Broker流量进入SQL Server内部可能是允许来自外部服务器的数据到达安全服务器的最安全方式。在Service Broker网络中,没有“客户端”和“服务器”的概念,并且无法设计允许仅在一个方向上进行连接的网络(例如,与HTTP不同,可以设计为从内部连接到外部而不是其他方式)。 SSB网络要求所涉及的两台计算机能够相互连接,因为响应消息可能在长时间延迟后发生(数小时,数天,考虑备份队列时的情况,因此需要很长时间才能处理消息,并且回复发送)。将连接数保持开放状态几天不可行是不可行的,因此消息的接收方必须能够连接回发送方以提供响应。