问题描述
我有将消息发送到 Service Broker Service 的数据库触发器。要发送消息,必须首先创建对话,因为这就是 Service Broker 的工作方式(在服务之间的对话中发送消息)。我读到应该重用对话,因为每次创建新对话都会对性能产生不良影响,并且对话数量可能会增加很多。无论我是否会重复使用对话,我都必须至少创建第一个对话。开始对话具有以下语法:
BEGIN DIALOG [ CONVERSATION ] @dialog_handle
FROM SERVICE initiator_service_name
TO SERVICE 'target_service_name'
[,{ 'service_broker_guid' | 'CURRENT DATABASE' }]
[ ON CONTRACT contract_name ]
[ WITH
[ { RELATED_CONVERSATION = related_conversation_handle
| RELATED_CONVERSATION_GROUP = related_conversation_group_id } ]
[ [,] LIFETIME = dialog_lifetime ]
[ [,] ENCRYPTION = { ON | OFF } ] ]
[ ; ]
我不知道应该在 FROM SERVICE 参数中设置什么。通常,Service Broker 对话是双向的。我想从触发器向服务发送消息,我不想得到任何反馈,我只想在一个方向上发送消息。我在 FROM SERVICE 参数中设置了目标服务并且它有效,但我不确定这是否是好的做法。我是否应该创建附加服务并将其设置在 FROM SERVICE 参数中,以便从我的触发器中使用对话?也许这个服务应该有一个激活程序,如果 EndDialog 消息到达,则结束对话?
我不希望目标服务有任何响应是一种很好的做法吗?我知道我可以收到一些管理消息,例如 http://schemas.microsoft.com/SQL/ServiceBroker/EndDialog 或 http://schemas.microsoft.com/SQL/ServiceBroker/Error。我的印象是 Service Broker 强制使用双向对话。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)