Temos duas filas, SSBInitiator e SSBTarget. Na minha situação de exemplo, executei o seguinte código para criar uma conversa:
BEGIN DIALOG CONVERSATION @ConversationHandle
FROM SERVICE [//BLAH/Events/SSBInitiator]
TO SERVICE '//BLAH/Events/SSBTarget'
ON CONTRACT [//BLAH/Events/SSBContract]
WITH ENCRYPTION = OFF;
Agora vamos dizer que, por algum motivo, decidi que essa conversa é desnecessária: ou o usuário cancelou a solicitação, ou algo mais aconteceu. Eu sei que posso encerrar a conversa usando:
end conversation @ConversationHandle
ou
END CONVERSATION @ConversationHandle
WITH ERROR = 1 DESCRIPTION = 'Ending Convo cause reasons';
Agora, com a conversa encerrada e nenhuma mensagem foi enviada, o serviço Target precisa fazer alguma coisa com a conversa? IE, há processamento adicional que precisa acontecer para garantir que a conversa seja completamente encerrada?
Dos Documentos da Microsoft :
Se apenas um lado encerrar a conversa, os metadados da conversa permanecerão válidos.
O
END CONVERSATION ... WITH CLEANUP
pode ser usado para limpar quaisquer conversas não terminadas.Remus Rusanu tem um excelente artigo mostrando como fazer isso aqui .