BizTalk Enviar Port Group e Filtragem
Pergunta
Assim, o modelo que preciso para minha solução é a seguinte:
Eu preciso consultar o banco de dados e com base no resultado, criar uma solicitação ao banco de dados de mais dados, obter a resposta e passá-lo para um grupo de portas, para que, com base em uma propriedade promovida, apenas uma das portas vai agir.
Parece que este:
No entanto, se você atribuir "Temp Out" para um grupo de porta de envio, a mensagem é enviada para todos os portos do grupo, independente dos filtros definidos em cada porta. No meu entendimento, este é o comportamento esperado (leia aqui ).
Então eu explorou outras opções, tais como o uso de Content Based Routing (amostra CBR) como no SDK. Você pode visualizar esta aqui .
Eu tentei isso e completamente removida a orquestração (seu realmente não é necessário). No entanto, existem grandes erros de roteamento / subscrição, e sobre novas pesquisas, parece que você não pode fazer isso se você tiver portas solicit-resposta. Alguns artigos sobre que aqui . Eu praticamente tenho o mesmo problema este utilizador faz.
No final, não importa para mim se eu usar uma orquestração ou não. No entanto, eu preciso de uma solução em que eu posso passar a mensagem para várias portas de envio, e eu só pode ter um realmente usar a mensagem e enviar. Isso é necessário para que eu possa editar e adicionar portas facilmente sem ter que modificar qualquer outra coisa ou decisões código rígido para a orquestração.
Solução 2
Eu achei que o exemplo do modelo CBR faz, de facto trabalho. O problema com roteamento eram as assinaturas. Se eu fosse para inscrever-se uma porta de envio a uma porta solicit-resposta, eu tinha que definir o BTS.SPName (Enviar Nome da porta) filtro em vez do filtro BTS.ReceivePort. Ao fazer isso, a mensagem corretamente foi filtrar. Você está resposta teria trabalhado muito, mas requer o uso de uma orquestração que eu estava tentando evitar.
Outras dicas
Você pode usar direto Encadernação na porta de envio da orquestração para injetar a volta mensagem no db caixa de mensagem. Usando vários grupos de portas, cada grupo de porta pode então assinar directamente para o tipo de mensagem desejada e filtro em propriedades promovidas.