Я заметил, что некоторые разговоры не закрываются, оставаясь в состоянии РАЗГОВОРА. Странно то, что очередь настроена на обработку только одного сообщения за раз. На практике, однако, есть 2 диалога в состоянии CONVERSING, один из которых действительно выполняет какую-то работу, а другой кажется зависшим.
Одна вещь, которую я использую, — это единая очередь и служба, которая отличается от обычных реализаций брокера служб (что делает ее больше похожей на монолог, а не на диалог). Я начинаю активацию SP с:
RECEIVE TOP(1)
@Handle = conversation_handle,
@MsgTypeName = message_type_name
FROM [//MyQueue]
IF (@@ROWCOUNT = 0)
RETURN
ELSE IF ((@MsgTypeName is null) or (@Handle is null))
RETURN
ELSE IF (@MsgTypeName != '//MyRequest')
BEGIN
END CONVERSATION @Handle
RETURN
END