Como fazer debatching com WCF-SQL

As vezes precisamos receber vários registros de uma procedure do SQL Server, e outras vezes precisamos fazer o split dessa mensagem.
O que eu quero dizer é que as vezes, quando a procedure retornar 10 registros, precisamos que seja iniciado 10 instancias da orchestration.
Aqui no blog já falamos bastante sobre Split de Mensagens, como neste meu primeiro post. Tem também este post que mostra como fazer o split sem usar a técnica do Envelope.
E como fazer isso com o novo WCF-SQL Adapter? Apesar que também precisamos usar a técnica do Envelope, a configuração é um pouco diferente.
No post anterior eu mostrei como criar schemas para ser usado na Receive Port. Então vamos pegar o mesmo projeto e continuar a partir dai.
Então nosso schema ficou assim:
image_thumb2

Clique no node e altere a proriedade Envelope para Yes.
image

Selecione o node TypedPolling e altere a propriedade Body Xpath apontando para o node TypedPollingResultSet0, que é o primeiro node logo abaixo dele.
image

Mude a propriedade Max Occurs do Segundo TypedPollingResultSet0 para 1
image


Agora vem a parte em que fiquei apanhando: Lendo o post do meu amigo Richard Seroter (um gigante do mundo SOA), depois dessas configurações ele mostra que é só compilar e fazer deploy do projeto que já está funcionando.

Porém, o exemplo dele não utiliza orchestration, então eu continuei a usar o node TypedPolling dentro da orchestration para receber a mensagem. E começou a pipocar esse erro:
Inner exception: Received unexpected message type does not match expected type http://Namespace#RootNode. Exception type: UnexpectedMessageTypeException

Fazendo alguns testes, e depois de 4 horas quebrando a cabeça, eu troquei a mensagem para usar o node TypedPollingResultSet0, e finalmente funcionou.

image

Essa é pra ficar documentado, e nunca mais perder tempo com esse problema.
Até a próxima.

Seja o primeiro a comentar ;)

Postar um comentário

BizTalk 360

Visitas

Arquivo do blog