You are on page 1of 60

Enterprise Integration Systems

Message Brokers

Bibliography
Biztalk Server Video Module 5: Routing BizTalk Messages
http://msdn.microsoft.com/en-us/ biztalk/hh403499.aspx

2012 IST

Outline
The Broker Concept Routing-level Integration Process-level integration Biztalk Server Integration
Communication-level integration in BizTalk Server Reliable assynchronous integration with MSMQ and Biztalk Server.
2012 IST 3

Introduo
Basic MOM:
in basic MOM it is the sender who specifies the identity of the receivers

sender

receiver

Message brokers:
with message brokers, custom message routing logic can be defined at the message broker level or at the queue level

message broker core message broker


Alonso, Casati, Kuno, Machiraju, Web Services: Concepts, Architectures, Applications, Springer, 2004

Routing baseado em contedo


cada tipo de mensagem destina-se a um canal/aplicao diferente, ou o mesmo tipo de mensagem segue para um canal de destino mediante certas condies
p.ex.: Quantidade > 500

Routing com base em processos

vantagem: muito maior exibilidade vantagem: ponto central de controlo desvantagem: pode limitar desempenho

Orquestrao

Message broker: viso geral


Orquestrador

Aplicao

Aplicao

Plataforma de mensagens

2 Modos de Integrao
routing ao nvel das mensagens routing ao nvel da orquestrao

2012 IST

routing ao nvel das mensagens


Orquestrador

Aplicao

Aplicao

Plataforma de mensagens

routing ao nvel da orquestrao


Orquestrador

Aplicao

Aplicao

Plataforma de mensagens

Message brokers
Message-oriented middleware
IBM MQSeries / WebSphere MQ Java Message Service (JMS) Microsoft Message Queuing (MSMQ) etc. (Oracle AQ, Apache ActiveMQ, etc.) IBM WebSphere Message Broker / WebSphere ESB Glasssh / Open ESB + NetBeans Microsoft BizTalk Server webMethods Integration Server etc. (Oracle Fusion, JBoss SOA platform, etc.)

Message brokers

Exemplo: BizTalk
Orquestrao

XML ou Flat File

Receive Port MessageBox

Send Port

MessageBox
uma base de dados e tambm um broker
guarda informao de mensagens e propriedades guarda informao de subscritores despacha mensagens para subscritores armazena mensagens se for necessrio

teoricamente, possvel ter vrias MessageBox


load balancing umas fazem routing, outras processam

Message Brokers

INTEGRAO AO NVEL DAS MENSAGENS


2012 IST 15

Integrao ao nvel das mensagens

Receive Port

Send Port A

MessageBox Filtro Customer = XYZ Price > 1000 Qty < 500 Port A B C

Send Port B

Send Port C

Anatomia de um receive port


Mensagem recebida por uma de vrias receive locations Adaptador (File, HTTP, SQL, etc.) Pipeline (PassThru, XML, customizada) Mapa de transformao (opcional)

Adaptador Receive Pipeline Receive Location

Adaptador Receive Pipeline Receive Location

Adaptador Receive Pipeline Receive Location

Mapa de Transformao Receive Port

Anatomia de um send port


Mensagem enviada para o exterior Adaptador (File, HTTP, SQL, etc.) Pipeline (PassThru, XML, customizada) Mapa de transformao (opcional)

Adaptador Send Pipeline Mapa Filtro Send Port

Filtro (opcional)

Filtros em send ports


tm uma expresso lgica
p.ex.: produto = iogurte AND quantidade <= 10 a porta subscreve as mensagens que obedecem expresso

mltiplas portas com ltros diferentes permitem implementar content-based routing


Filtro 1 Receive Port Send Port

MessageBox

Filtro 2

Send Port

Promoo de propriedades
as propriedades usadas nas expresses dos ltros tm de ser promovidas
p.ex. ltro 1: produto = iogurte AND quantidade <= 10 p.ex. ltro 2: produto = natas AND validade < 3 dias Promover as propriedades produto, quantidade e validade
Filtro 1 Receive Port Send Port

MessageBox

Filtro 2

Send Port

Promoo de propriedades:
criar um property schema (adicional)
representa os dados importantes para integrao

promover os campos da mensagem original


indica que a mensagem contm alguns desses dados Schema Property Schema Produto
Quantidade Data Validade Preo Produto Quantidade Validade

Message brokers
exemplo com uma s propriedade (Quantity)

Promoo de propriedades noutros schemas


exemplo de promoo do campo Quantity

Promoo de propriedades
no Tutorial 1, Quantity foi distinguida
para ser possvel aceder ao valor na orquestrao

aqui estamos a ver propriedades promovidas


para ser possvel aceder ao valor ao nvel das mensagens

Propriedades Promovidas vs. Distinguidas


Orquestrao

Propriedades distinguidas

Receive Port MessageBox

Send Port

Propriedades promovidas

Propriedades da mensagem
Propriedade distinguida
corresponde a uma expresso XPath usada para expresses e cdigo nas orquestraes no acessvel MessageBox necessita de um property schema usada em ltros e content-based routing acessvel MessageBox e a todos os componentes exige algum processamento adicional (performance)

Propriedade promovida

Integrao ao nvel das mensagens


Property Schema

Receive Port

Schema

Filtro

Send Port

Filtro

Send Port

MessageBox

Filtro

Send Port

Integrao ao nvel das mensagens: processamento


1. receber mensagem numa receive port 2. extrair propriedades promovidas da mensagem 3. consultar ltros dos subscritores
neste caso os subscritores so send ports em geral, tambm podem ser orquestraes

4. enviar a mensagem para os subscritores 5. manter um registo para efeitos de monitorizao


semelhante a queue journal no sistema MSMQ

Message Brokers

INTEGRAO AO NVEL DA ORQUESTRAO


2012 IST 29

Integrao ao nvel da orquestrao


tambm h send ports e receive ports
na orquestrao as portas so lgicas ao nvel das mensagens as portas so fsicas preciso fazer a ligao (port binding) entre as duas

em vez de ltros:
routing dado pelo uxo da orquestrao a shape permite caminhos alternativos com base em expresses com propriedades distinguidas

mapas de transformao
aparecem na shape Transform, no nos portos

Integrao ao nvel da orquestrao


Receive Port

RequestInstance.Item.Quantity > 500

Send Port

Send Port

Integrao ao nvel da orquestrao


Send Port

Receive Port

MessageBox

Send Port

Message Brokers

IMPLEMENTAO DE TUTORIAL 1 COM MENSAGENS


2012 IST 33

Cenrio do Tutorial 1
Armazm

Pedido

Sistema ERP No = No aprovado

Quantidade <= 500 ? Sim = Aprovado

Implementao com Mensagens

Quantidade <= 500

Send Port

Request Request
Armazm
Receive Port

Sistema ERP

Broker (BizTalk)

Request Denied
Send Port Mapa

Quantidade > 500

Implementao do Tutorial 1 sem orquestrao


1. 2. 3. 4. 5. 6. criar schemas Request e RequestDenied criar property schema com Quantity promover Quantity no Request.xsd criar mapa Request -> RequestDenied criar 1 receive port e 2 send ports congurar o ltro da porta request accepted 7. congurar mapa e ltro da porta request denied

1. Criar os schemas Request e RequestDenied

2. Criar property schema RequestProperties.xsd

Message brokers
3. Promover Quantity no schema Request

4. Criar mapa Request -> RequestDenied

5. Congurar e fazer deploy da aplicao

6. Criar receive port e receive location

7. Criar a send port para pedidos aceites e congurar ltro

Quantity <= 500

8. Criar a send port para pedidos negados e congurar mapa e ltro


Request -> MapToReqDenied -> RequestDenied

EAISolutionWithoutOrchestration.Quant ity > 500

9. Iniciar a aplicao
estado das portas
enlisted/ unenlisted
com / sem subscrio

started/ stopped:
activo ( escuta) / no activo

Mesma Funo que em Tutorial 1


sem orquestraes,

com content-based routing


Quantidade <= 500

Send Port

Request Request
Armazm
Receive Port

Sistema ERP

Broker (BizTalk)

Request Denied
Send Port Mapa

Quantidade > 500

Limitao: aplicaes online


soluo assncrona, mas supe as aplicaes esto todas online ao mesmo tempo
um pedido aceite enviado para o sistema ERP e o sistema recebe-o nesse momento

como tornar a soluo mais exvel?


com las de mensagens
uma la para os pedidos uma la para os pedidos negados uma la para os pedidos aceites

Cenrio do Tutorial 1 ao nvel das mensagens


e agora tambm com las de mensagens (MSMQ)
Quantidade <= 500

Request requests
Armazm
Receive Port

requests accepted Request


Broker (BizTalk)

Send Port

Sistema ERP

Request Denied requests denied


Send Port Mapa
Quantidade > 500

10. Parar a aplicao

11. Criar as las


requests requestsdenied requestsaccepted

12. Alterar receive location


de FILE para MSMQ e congurar nome da la

13. Alterar as send ports para as las respectivas

14. Iniciar a aplicao

15. Gerar uma instncia de Request.xsd

16. Editar a mensagem


<ns0:Request xmlns:ns0="http:// EAISolutionWithoutOrchestration.Request"> <Header> <ReqID>123</ReqID> <Date>2013-03-19</Date> </Header> <Item> <Description>Iogurte</Description> <Quantity>3</Quantity> <UnitPrice>0.50</UnitPrice> <TotalPrice>1.50</TotalPrice> </Item> </ns0:Request>

17. Criar aplicao para enviar pedido (armazm)


Ler contedo string requestMsg = File.ReadAllText("Request.xml"); Abrir a la string queueName = @".\private$\requests"; MessageQueue queue = new MessageQueue(queueName); Criar mensagem Message queueMsg = new Message(); StreamWriter writer = new StreamWriter(queueMsg.BodyStream); Colocar contedo na writer.Write(requestMsg); mensagem writer.Flush(); queue.Send(queueMsg); Enviar mensagem

18. Ler a resposta da la (sistema ERP)


string queueName = @".\private$\requestsaccepted"; MessageQueue queue = new MessageQueue(queueName); Message queueMsg = queue.Receive(); StreamReader reader = new StreamReader(queueMsg.BodyStream); string requestMsg = reader.ReadToEnd(); Console.WriteLine(requestMsg);

Abrir a la Receber mensagem Ler contedo da mensagem Processar

19. Pedido aceite e pedido negado exemplos


Mensagem recebida na la requestsaccepted

Mensagem recebida na la requestsdenied

Concluso
uma soluo de integrao pode ser realizada
ao nvel das mensagens, com content-based routing
exige promoo de propriedades das mensagens

ao nvel da orquestrao, com a denio do processo


pode fazer uso de propriedades distinguidas necessita de propriedades promovidas se usar correlaes (porqu?)

Correlaes e propriedades promovidas


Instncia 1 Instncia 2 Instncia 3

S
R

S
R

S
R

Send Port MessageBox

Receive Port

Necessrio promover para ter acesso s propriedades e identicar a instncia

You might also like