Dito isso, a seguinte situação me motivou a escrever este post. Um cliente me procurou nas ultimas semanas me questionando sobre as estratégias de roteamento do JBoss ESB para implementação do padrão EAI Splitter. O questionamento foi o seguinte: Baseado no padrão, a estratégia é pegar uma mensagem, separá-la em mensagens diferentes e cada mensagem criada, ser roteada para um canal de mensagens diferente.
Tendo esta estratégia em mente, o cliente procurou no JBoss ESB implementações OOB que fizessem isso, e pra sua surpresa (e minha também) nada foi encontrado. As actions StaticRouter e StaticWiretap teoricamente fazem isso, mas o que elas fazem é mandar a mesma mensagem recebida, para diferentes canais de mensagens. Ou seja, o "split" que eles fazem é apenas de canais, ele joga a mensagem do canal de entrada para diferentes canais de saída, mas não faz o split da mensagem em si.
Entendida sua dúvida, e concordando que as implementações OOB do JBoss ESB divergem um pouco do que o padrão sugere, resolvemos que criaríamos uma implementação personalizada do Splitter, um pouco mais alinhada com o padrão estabelecido no EAI Patterns. Fiz esta implementação, e resolvi postar no JIRA do JBoss ESB para que isso vire uma feature da próxima versão. Segue o endereço deste JIRA:
https://jira.jboss.org/jira/browse/JBESB-2805
Se vocês quiserem, votem na feature e agitem o grupo de usuários do JBoss ESB para que a feature seja aprovada. Abaixo, segue a implementação deste padrão. No JIRA, coloquei também um projeto que fiz para testar a implementação.
Na listagem abaixo, segue um exemplo de configuração desta action dentro do JBoss ESB. Repare que para cada roteamento da mensagem recebida, é feito um processo de transformação da mensagem, e a mensagem resultante é roteada para o canal de mensagem, e não, a mensagem original recebida.
Boas Integrações ;-)


