最让我困惑的是如何对话/对话与这种情况有关。我知道您只能在对话/对话框的上下文中发送/接收消息,但由于两个应用程序之间没有任何来回的喋喋不休,所以创建新会话的正确时间是什么时候都感到失落。两个极端的选择似乎是:
>每次我排队一个工作项,我开始一个新的对话。所以每个对话最终都只有一个消息。
>在部署时,我手动创建一个无限寿命的会话。当它是排队工作项目的时候,我总是发送它作为单一对话的一部分。
去这些路线的后果是什么?
此外,在第一种情况下,似乎我需要做一些END CONVERSATION,以使sql Server能够在内部清理资源。有没有什么指导,什么时候把这些放在正确的地方? (或者最终可能依靠谈话超时才能更好吗?)
解决方法
这是最简单的部署,让它运行起来将确保您有一个良好的基础建立。当生产者进入工作项目时,不要将角落和结束发起方的对话框,这是fire-and-forget and has several draw backs。
如果您具有高性能要求(每秒超过200个请求),则必须更明确地开始管理对话。我在reusing conversations for performance reasons有一个博客条目。在接收端我建议阅读Writing Service Broker Procedures。
我也有一个博客条目,几乎完成你所需要的,尽管它不调度工作项,而是启动自定义过程:Asynchronous procedure execution。
如果您决定从激活的上下文中使用工作项,从而利用激活的良好的自我平衡功能,那么您需要使用understand the EXECUTE AS context under which activation occurs。
原文地址:https://www.jb51.cc/mssql/84560.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。