Como fazer debatching com WCF-SQL | BizTalk Brasil
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:
Clique no node e altere a proriedade Envelope para Yes. Selecione o node TypedPolling e altere a propriedade Body Xpath apontando para o node TypedPollingResultSet0, que é o primeiro node logo abaixo dele. Mude a propriedade Max Occurs do Segundo TypedPollingResultSet0 para 1
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.
Essa é pra ficar documentado, e nunca mais perder tempo com esse problema. Até a próxima. Marcadores: