0

我现在在项目中工作,在该项目中,应该使用 Server Broker 功能将多个 POS 同步到主服务器。现在我为这个解决方案准备错误处理,并想向客户展示它是如何工作的。这意味着我将为每种错误准备测试脚本,客户端在测试 POS 上运行它以查看它是否正确处理错误。

我们将使用 SQL Server 2008R2 并设置有害消息 = OFF。

消息类型=XML(但里面可以是不同类型的数据,一些节点会包含 BLOB)。

POSes 将在圆顶之外,因此传输将受到保护(但没有对话加密)。

我将错误分为几个子组:

  1. 逻辑错误(例如字符串而不是数字)。它将由服务器端的TRY-CATCH块处理。易于模拟

  2. Service Broker 配置错误(消息或将不返回或无法到达目的地)。我认为它可以通过使用 SQl Server Service Broker 事件来处理,并且模拟将是某种“错误配置”(SB GUID、服务名称等)

  3. 运输错误。这是我们收到错误消息的时候。事实上,测试这种错误是客户的意见。我不知道我们是否有安全的传输级别(证书),我们可以免受此类错误的影响。另一个问题我如何模拟这个。

问题:

  • 还有其他错误类型吗?
  • #2 错误处理逻辑是否描述得足够好?
  • 如何处理和模拟#3?
4

1 回答 1

1

本文的第二部分讨论Service Broker 错误、它们是如何发生的以及如何处理它们。对您来说重要的是区分两类错误:

  • 可恢复:传输问题,大多数配置错误,如路由错误,服务器无法访问。所有这些都不会导致 SSB 错误,而是会导致延迟。消息将保留在 transmission_queue 中,期望问题是暂时的并且可以解决,包括一些配置问题。问题解决后,SSB 将重试并传递消息。
  • 不可恢复:这些是 SSB 认为不可恢复的问题,例如。错误的消息格式。在这种情况下,对话将被中止,并且两个端点都会收到错误消息。

我还有一篇文章Service Broker 过程中的错误处理,讨论了 SSB 激活上下文中异常处理的一些主题。

最后一点:我强烈建议您不要关闭有害信息检测功能。禁用处理比因为有毒消息而旋转 ad-nauseam 而不取得进展要好得多。

关于如何模拟损坏的消息的主题:很难模拟(您可以尝试设置一个端口转发器,让所有流量通过,但随机损坏其中一些),但毫无意义。所有 SSB 流量,即使是明文,都经过加密签名,任何消息损坏都会由于消息签名验证失败而导致突然断开连接。

于 2011-06-02T05:33:54.673 回答