Criando aplicativos do Service Broker

Esta seção fornece uma visão geral da estrutura de um aplicativo do Service Broker, descreve algumas das estratégias mais comuns para iniciar um aplicativo que usa o Service Broker e descreve as etapas básicas para receber e processar mensagens.

O aplicativo para um serviço inicial usa a instrução BEGIN DIALOG para especificar as informações sobre os serviços em cada ponto de extremidade e o contrato de serviço que o aplicativo usará para se comunicar. O aplicativo usa a instrução SEND para enviar a primeira mensagem da conversação para o serviço de destino. O aplicativo deve ser preparado para receber e processar mensagens do Service Broker, mesmo se o contrato não permitir que o serviço de destino retorne mensagens. O aplicativo inicial geralmente é implementado como dois componentes separados. Um componente começa a conversação; o outro componente processa as mensagens que chegam na fila.

O aplicativo para um serviço de destino recebe e processa mensagens do serviço inicial. O aplicativo também deve estar preparado para receber e processar mensagens do Service Broker.

Dependendo das necessidades do serviço, a parte do aplicativo que processa a fila pode ser iniciada de vários modos diferentes. Para obter mais informações sobre como iniciar um aplicativo que usa o Service Broker, consulte Escolhendo uma estratégia de inicialização.

Entretanto o aplicativo inicia e começa uma transação usando a instrução RECEIVE para remover uma mensagem da fila. O aplicativo extrai os dados das mensagens e executa qualquer processamento necessário. Se necessário, o aplicativo usa a instrução SEND para enviar mensagens ao outro lado da conversação. Em seguida, o aplicativo confirma a transação. Para maior eficiência, o aplicativo pode processar várias mensagens dentro da mesma transação. Os serviços que mantêm o estado normalmente usam a instrução GET CONVERSATION GROUP para bloquear um grupo de conversação, recuperar o estado para o grupo de conversação e, em seguida, processar várias mensagens para o grupo de conversação.

A conversação continua, usando as instruções SEND e RECEIVE para transmitir mensagens entre os pontos de extremidade. A qualquer momento, se necessário, o participante da conversação pode usar BEGIN DIALOG para iniciar uma conversação com outro serviço a fim de obter informações adicionais. Por exemplo, um aplicativo que esteja processando uma notificação de evento pode iniciar outra conversação com um serviço que forneça informações pessoais a fim de recuperar as informações do contato atual antes de enviar um alerta.

Quando a conversação alcançar seu propósito, o aplicativo no ponto de extremidade apropriado usará uma instrução END CONVERSATION para terminar a conversação. O outro participante recebe a mensagem END CONVERSATION e também emite uma mensagem END CONVERSATION em seu lado. Quando ambos os participantes tiverem emitido as mensagens END CONVERSATION, a conversação termina.

Se ocorrer um erro, um participante da conversação poderá indicar falha terminando a conversação usando a cláusula WITH ERRO. O uso da cláusula WITH ERROR termina a conversação e envia uma mensagem de erro do Service Broker ao outro participante da conversação.

Se o Service Broker detectar um erro ou o tempo de vida de conversação expirar, o Service Broker terminará a conversação e retornará uma mensagem de erro aos participantes ativos. Se o Service Broker não puder estabelecer uma conversação, o único participante ativo será o aplicativo inicial e o erro será entregue ao serviço inicial. Se um participante já tiver terminado a conversação, a mensagem de erro será enviada ao outro participante. Caso contrário, o erro será enviado aos dois participantes da conversação.

Nesta seção