我是 Sql Server Service Broker 新手,我正在尝试掌握为(看似)简单的用例设置 Service Broker 的最佳方法:我想创建一个简单的工作队列,其中一个应用程序将工作项放入队列,并且单独的应用程序从该队列中提取工作项并处理它们。第一个应用程序不需要从第二个应用程序获取状态消息。我希望队列存在于单个 Sql Server 实例中。
最让我困惑的是对话/对话与这种情况的关系。我知道您只能在对话/对话的上下文中发送/接收消息,但是由于两个应用程序之间没有来回的聊天,我对何时是创建新对话的正确时间感到迷茫。两个极端的选择似乎是:
- 每次我将工作项排入队列时,我都会开始新的对话。因此,每个对话最终都会包含一条消息。
- 在部署时,我手动创建了一个无限期对话。当需要将工作项排入队列时,我总是将其作为单个对话的一部分发送。
走这两条路线的后果是什么?
此外,在第一种情况下,似乎我需要进行一些 END CONVERSATION,以便 Sql Server 能够在内部清理资源。有什么指导什么时候可以把它们放在正确的地方吗?(或者最终依赖对话超时可能会更好?)