【问题标题】:How to manage both dialog reuse and conversation lifetime?如何管理对话重用和对话生命周期?
【发布时间】:2018-10-03 20:30:53
【问题描述】:

我使用@RemusRusanu 的 Service Broker 博客示例来解决一些类似 ETL 的问题。它运作良好。我知道在对话对话中不设置 LIFETIME 属性可能会导致 DB 意外增长,直到达到 Int32.Max 秒等待时间,这会释放与过时对话相关的 DB 对象。将 LIFETIME 属性设置为低值有助于资源被释放。

但是我如何处理 RR 的对话重用技术,使用表格模式(例如,为每个 DB 对话存储对话 GUID)并同时设置一些 LIFETIME 属性?据我不知道它何时超时,预期的缺点将是下次我将查询表以获取同一数据库的对话 ID 时盲目地重用已结束的对话,这显然会引发一些异常。

是否可以(轻松地)收到有关对话 LIFETIME 超时事件的通知,以便我可以自己处理从表中删除对话记录?

感谢分享。

让-伊夫

【问题讨论】:

  • 我不明白你的担忧。如果您正在重用对话池,您认为什么会“意外增长”?

标签: sql-server service-broker


【解决方案1】:

我使用相同的技术,我并不担心在(有符号的)int 的最大值到期之前需要经过大约 70 年(!!)。到那时我肯定已经死了,而且数据库很可能也会死。

也就是说,我最近考虑过设置生命周期。我的做法是设置一个代理作业来检测一些对话即将到期,并很快找到新的对话来替换它们。其中一个新句柄被验证为有效,请在旧句柄上调用 END CONVERSATION

【讨论】:

    猜你喜欢
    • 2016-04-12
    • 2012-05-27
    • 1970-01-01
    • 2010-10-16
    • 2012-11-06
    • 1970-01-01
    • 1970-01-01
    • 2016-07-03
    • 2020-07-28
    相关资源
    最近更新 更多