SlideShare uma empresa Scribd logo
1 de 35
Reliable Messaging Marc de Graauw
Betrouwbaar transport Netwerk is niet betrouwbaar Het is niet te garanderen dat twee partijen beide 100% zeker weten dat communicatie geslaagd is Het is wel te garanderen dat als de communicatie niet geslaagd is, tenminste een partij dat weet Aanname: vroeg of laat is het netwerk weer beschikbaar
Eisen betrouwbaar transport Ieder bericht wordt minimaal een keer afgeleverd Ieder bericht wordt maximaal een keer afgeleverd Berichten worden afgeleverd in de volgorde waarin ze verzonden zijn Afgeleverde berichten worden bewaard
Het Issue Transport over HTTP is niet betrouwbaar Geen antwoord op een bericht: door timeout, netwerk down, server down niet zeker of het bericht al dan niet aangekomen en/of verwerkt is
HTTP Methods (RFC 2616) safe  heeft geen neveneffecten op de server HTTP: GET b.v.: opvragen informatie idempotent laat server in zelfde staat na herhaling  HTTP DELETE, PUT b.v. verwijderen record niet-idempotent wijzigt server HTTP  POST b.v. 100 aandelen kopen
Zender Ontvanger Bericht
Zender Ontvanger Bericht Verwerk bericht Kopie van bericht Ontvangstbevestiging
Zender Ontvanger Verwerk bericht Bericht Ontvangstbevestiging Niet verwerken Kopie van bericht Ontvangstbevestiging
Betrouwbare aflevering Gegarandeerde aflevering berichtnummers ontvangstbevestiging eventueel duplicaat zenden Eenmalige aflevering duplicaatdetectie duplicaatverwijdering Volgordelijke aflevering oplopende berichtnummering
Eisen aan betrouwbaar transport Eis 1: duplicaatdetectie is nodig voor niet-idempotente acties Eis 2: ontvangstbevestigingen zijn nodig bij niet-directe acties Ontwerprichtlijn: Geef bij iedere interactie aan of deze veilig en/of idempotent is Ontwerprichtlijn: Ieder bericht waarop niet direct een (ander) antwoord komt, krijgt een ontvangstbevestiging Ontwerprichtlijn: Idempotente berichten waarop het verwachte antwoord niet komt, worden herhaald met een nieuw bericht-id. Geen duplicaat dus, maar een nieuw bericht Ontwerprichtlijn: De ontvanger hoeft voor idempotente berichten geen status (bericht-id en verzonden antwoord) te bewaren Ontwerprichtlijn: Niet-idempotente berichten waarop het verwachte antwoord niet komt, worden herhaald met een duplicaat.
Transport Level Reliability
WS-ReliableMessaging Apache Sandesha 2 ondersteund WS-RM 1.1 voor Axis2 Java en C++ http://ws.apache.org/sandesha/sandesha2/index.html WSO2 bevat Sandesha2 en ondersteund daarmee ook WS-RM 1.1. Metro 3.0.1 (onderdeel van J2EE reference implementatie "glassfish") ondersteund in ieder geval WS-RM 1.1. https://metro.dev.java.net/ Apache CXF ondersteund gezien de source alleen WS-RM 1.0. JBossWS vanaf versie 3.0.1: ondersteund 1.0 en 1.1. https://jira.jboss.org/jira/browse/JBWS-515 http://jbossws.jboss.org/mediawiki/index.php?title=WS_Reliable_Messaging Microsoft .Net ondersteund WS-RM 1.1 vanaf versie 3.5, Windows Communication Framework
WS-ReliableMessaging CreateSequence CreateSequenceResponse Sequence Sequence + AckRequested SequenceAcknowledgement TerminateSequence TerminateSequenceResponse
Infra 1
Infra 2 tekenen token, bericht eindpunt transport, opslaan
ZIM GBZ 1 GBZ 2 app opslag ack ack app
WSRM patronen 1-way bidirectional anonymous veel berichten (atom. aanmelden) plaatjes
Ontvanger Zender HL7v3 Query 1. Queries HL7v3 Antwoord 2. Bericht  zonder antwoord HL7v3 Bericht HL7v3 Accept Acknowledgement HL7v3 Bericht  3. Bericht  met antwoord HL7v3 BerichtResponse (Accept or Reject)
ZIM GBZ 1 CreateSequence CreateSequenceResponse HL7v3 bericht 1 + AckRequest ack 1 TerminateSequence TerminateSequenceResponse
ZIM GBZ 1 CreateSequence CreateSequenceResponse HL7v3 bericht 1 HL7v3 bericht 2 HL7v3 bericht 3 HL7v3 bericht 4 HL7v3 bericht 5 + AckRequest ack 1..5 TerminateSequence TerminateSequenceResponse
ZIM GBZ 1 CreateSequence CreateSequenceResponse HL7v3 bericht 1 HL7v3 bericht 2 HL7v3 bericht 3 HL7v3 bericht 4 HL7v3 bericht 5 + AckRequest ack 2..5 HL7v3 bericht 1 + AckRequest ack 1 TerminateSequence TerminateSequenceResponse
ZIM GBZ 1 CreateSequence CreateSequenceResponse HL7v3 bericht a1 HL7v3 bericht a2 HL7v3 bericht b1 HL7v3 bericht a3 HL7v3 bericht a4 + AckRequest HL7v3 bericht b2 + ackRequest ack a1..a4 ack b1..b2 TerminateSequence TerminateSequenceResponse
ZIM GBZ 1 HTTP Request + HL7v3 bericht 1  HTTP Response + HL7v3 Accept Ack
ZIM GBZ 1 CreateSequence CreateSequenceResponse HTTP Request + HL7v3 bericht 1 +  AckRequest HTTP Response + ack 1 TerminateSequence TerminateSequenceResponse
ZIM GBZ 1 CreateSequence CreateSequenceResponse HTTP Request + HL7v3 bericht 1 +  AckRequest HTTP 200 OK HTTP Response + ack 1 HTTP 200 OK TerminateSequence TerminateSequenceResponse
Welke communicatiepatronen? anonymous one-way, one message, one ack anonymous one-way, many messages, many acks addressed one-way, many messages, one ack? bidirectional – (nog) niet? alles anonymous?
Business level Reliability
business document business document Envelope Headers: Web Service Sender Web Service Receiver reliability reliability module messaging reliability module messaging security security module security module Payload: transaction module transaction module business document et cetera et cetera
Scenario 1: Resending works Sender Receiver Message Duplicate Message Process Message Acknowledgement
Scenario 2: Resending fails Sender Receiver Message Process Message Acknowledgement Duplicate Message Process Message Acknowledgement
Scenario 3: Reliable messaging Sender Receiver Message Process Message Acknowledgement Duplicate Message Discard Duplicate Acknowledgement
Sender’s Transport Module Receiver’s Transport Module Sender’s Business Module Receiver’s Business Module Place Order Order Message Transport Ack Submit  Order Accept Order Accept Message Transport Ack Submit  Accept
GP’s Transport Module Pharmacists Transport Module GP’s Consultation Application Pharmacists Prescription Application Prescription Prescription Prescription prescription.id=x prescription.id=x prescription.id=x Ack prescription Prescription Prescription prescription.id=x Prescription prescription.id=x prescription.id=x Error Error Error prescription.id=x already exists prescription.id=x already exists prescription.id=x already exists

Mais conteúdo relacionado

Destaque

Preventores sociales comunitarios
Preventores sociales comunitariosPreventores sociales comunitarios
Preventores sociales comunitarios
Richard Ortega
 
Computacion dia positivas
Computacion dia positivasComputacion dia positivas
Computacion dia positivas
alexdiaz1992
 
ApresentaçãoPET
ApresentaçãoPETApresentaçãoPET
ApresentaçãoPET
Leticiacs10
 
Matematica projeto conecta
Matematica projeto conectaMatematica projeto conecta
Matematica projeto conecta
stemcbm
 

Destaque (19)

Contestador Escuela
Contestador EscuelaContestador Escuela
Contestador Escuela
 
6 infeccoes do_tracto_urinario
6 infeccoes do_tracto_urinario6 infeccoes do_tracto_urinario
6 infeccoes do_tracto_urinario
 
Preventores sociales comunitarios
Preventores sociales comunitariosPreventores sociales comunitarios
Preventores sociales comunitarios
 
Bons Ventos
Bons VentosBons Ventos
Bons Ventos
 
ERPeixoto
ERPeixotoERPeixoto
ERPeixoto
 
PMO EM LISARB
PMO EM LISARBPMO EM LISARB
PMO EM LISARB
 
PMO EM LISARB
PMO EM LISARBPMO EM LISARB
PMO EM LISARB
 
São paulo geep25-fundamentos-educa
São paulo geep25-fundamentos-educaSão paulo geep25-fundamentos-educa
São paulo geep25-fundamentos-educa
 
Life
LifeLife
Life
 
16 Jan 2012 :: Pergunta ao Governo: «medicamentos dispensados a doentes de es...
16 Jan 2012 :: Pergunta ao Governo: «medicamentos dispensados a doentes de es...16 Jan 2012 :: Pergunta ao Governo: «medicamentos dispensados a doentes de es...
16 Jan 2012 :: Pergunta ao Governo: «medicamentos dispensados a doentes de es...
 
Armar a las masas revolucionarias
Armar a las masas revolucionariasArmar a las masas revolucionarias
Armar a las masas revolucionarias
 
Computacion dia positivas
Computacion dia positivasComputacion dia positivas
Computacion dia positivas
 
Recife-GP11-FGP-Grupo5
Recife-GP11-FGP-Grupo5Recife-GP11-FGP-Grupo5
Recife-GP11-FGP-Grupo5
 
Bh gp39-pmo-clean fan - ventos do campo
Bh gp39-pmo-clean fan - ventos do campoBh gp39-pmo-clean fan - ventos do campo
Bh gp39-pmo-clean fan - ventos do campo
 
ApresentaçãoPET
ApresentaçãoPETApresentaçãoPET
ApresentaçãoPET
 
PMO em Lisarb - equipe Grupo
PMO em Lisarb - equipe GrupoPMO em Lisarb - equipe Grupo
PMO em Lisarb - equipe Grupo
 
Conflicto y guerra sociologia historica (raymon aron)
Conflicto y guerra sociologia historica (raymon aron)Conflicto y guerra sociologia historica (raymon aron)
Conflicto y guerra sociologia historica (raymon aron)
 
Matematica projeto conecta
Matematica projeto conectaMatematica projeto conecta
Matematica projeto conecta
 
Cultura moche
Cultura mocheCultura moche
Cultura moche
 

Mais de Marc de Graauw

Elektronische handtekening in de zorg
Elektronische handtekening in de zorgElektronische handtekening in de zorg
Elektronische handtekening in de zorg
Marc de Graauw
 
Authentication and signatures overview
Authentication and signatures   overviewAuthentication and signatures   overview
Authentication and signatures overview
Marc de Graauw
 
Tokenauthenticatie en xml signature in detail
Tokenauthenticatie en xml signature in detailTokenauthenticatie en xml signature in detail
Tokenauthenticatie en xml signature in detail
Marc de Graauw
 
Hl7v3 and web services
Hl7v3 and web servicesHl7v3 and web services
Hl7v3 and web services
Marc de Graauw
 
XML tekortkomingen en pluspunten
XML   tekortkomingen en pluspuntenXML   tekortkomingen en pluspunten
XML tekortkomingen en pluspunten
Marc de Graauw
 
Versiecontrole in de keten
Versiecontrole in de ketenVersiecontrole in de keten
Versiecontrole in de keten
Marc de Graauw
 
Luister niet naar de gebruiker
Luister niet naar de gebruikerLuister niet naar de gebruiker
Luister niet naar de gebruiker
Marc de Graauw
 

Mais de Marc de Graauw (13)

Elektronische handtekening in de zorg
Elektronische handtekening in de zorgElektronische handtekening in de zorg
Elektronische handtekening in de zorg
 
Authentication and signatures overview
Authentication and signatures   overviewAuthentication and signatures   overview
Authentication and signatures overview
 
Identiteit in de ict
Identiteit in de ictIdentiteit in de ict
Identiteit in de ict
 
Tokenauthenticatie en xml signature in detail
Tokenauthenticatie en xml signature in detailTokenauthenticatie en xml signature in detail
Tokenauthenticatie en xml signature in detail
 
Overzicht aorta
Overzicht aortaOverzicht aorta
Overzicht aorta
 
Hl7v3 schema issues
Hl7v3 schema issuesHl7v3 schema issues
Hl7v3 schema issues
 
Hl7v3 and web services
Hl7v3 and web servicesHl7v3 and web services
Hl7v3 and web services
 
XML tekortkomingen en pluspunten
XML   tekortkomingen en pluspuntenXML   tekortkomingen en pluspunten
XML tekortkomingen en pluspunten
 
Versioning theory
Versioning theoryVersioning theory
Versioning theory
 
Versiecontrole in de keten
Versiecontrole in de ketenVersiecontrole in de keten
Versiecontrole in de keten
 
Unicode
UnicodeUnicode
Unicode
 
Luister niet naar de gebruiker
Luister niet naar de gebruikerLuister niet naar de gebruiker
Luister niet naar de gebruiker
 
Overzicht hl7v3
Overzicht hl7v3Overzicht hl7v3
Overzicht hl7v3
 

Reliable messaging

  • 2.
  • 3. Betrouwbaar transport Netwerk is niet betrouwbaar Het is niet te garanderen dat twee partijen beide 100% zeker weten dat communicatie geslaagd is Het is wel te garanderen dat als de communicatie niet geslaagd is, tenminste een partij dat weet Aanname: vroeg of laat is het netwerk weer beschikbaar
  • 4. Eisen betrouwbaar transport Ieder bericht wordt minimaal een keer afgeleverd Ieder bericht wordt maximaal een keer afgeleverd Berichten worden afgeleverd in de volgorde waarin ze verzonden zijn Afgeleverde berichten worden bewaard
  • 5. Het Issue Transport over HTTP is niet betrouwbaar Geen antwoord op een bericht: door timeout, netwerk down, server down niet zeker of het bericht al dan niet aangekomen en/of verwerkt is
  • 6. HTTP Methods (RFC 2616) safe heeft geen neveneffecten op de server HTTP: GET b.v.: opvragen informatie idempotent laat server in zelfde staat na herhaling HTTP DELETE, PUT b.v. verwijderen record niet-idempotent wijzigt server HTTP POST b.v. 100 aandelen kopen
  • 8. Zender Ontvanger Bericht Verwerk bericht Kopie van bericht Ontvangstbevestiging
  • 9. Zender Ontvanger Verwerk bericht Bericht Ontvangstbevestiging Niet verwerken Kopie van bericht Ontvangstbevestiging
  • 10. Betrouwbare aflevering Gegarandeerde aflevering berichtnummers ontvangstbevestiging eventueel duplicaat zenden Eenmalige aflevering duplicaatdetectie duplicaatverwijdering Volgordelijke aflevering oplopende berichtnummering
  • 11. Eisen aan betrouwbaar transport Eis 1: duplicaatdetectie is nodig voor niet-idempotente acties Eis 2: ontvangstbevestigingen zijn nodig bij niet-directe acties Ontwerprichtlijn: Geef bij iedere interactie aan of deze veilig en/of idempotent is Ontwerprichtlijn: Ieder bericht waarop niet direct een (ander) antwoord komt, krijgt een ontvangstbevestiging Ontwerprichtlijn: Idempotente berichten waarop het verwachte antwoord niet komt, worden herhaald met een nieuw bericht-id. Geen duplicaat dus, maar een nieuw bericht Ontwerprichtlijn: De ontvanger hoeft voor idempotente berichten geen status (bericht-id en verzonden antwoord) te bewaren Ontwerprichtlijn: Niet-idempotente berichten waarop het verwachte antwoord niet komt, worden herhaald met een duplicaat.
  • 13. WS-ReliableMessaging Apache Sandesha 2 ondersteund WS-RM 1.1 voor Axis2 Java en C++ http://ws.apache.org/sandesha/sandesha2/index.html WSO2 bevat Sandesha2 en ondersteund daarmee ook WS-RM 1.1. Metro 3.0.1 (onderdeel van J2EE reference implementatie "glassfish") ondersteund in ieder geval WS-RM 1.1. https://metro.dev.java.net/ Apache CXF ondersteund gezien de source alleen WS-RM 1.0. JBossWS vanaf versie 3.0.1: ondersteund 1.0 en 1.1. https://jira.jboss.org/jira/browse/JBWS-515 http://jbossws.jboss.org/mediawiki/index.php?title=WS_Reliable_Messaging Microsoft .Net ondersteund WS-RM 1.1 vanaf versie 3.5, Windows Communication Framework
  • 14.
  • 15. WS-ReliableMessaging CreateSequence CreateSequenceResponse Sequence Sequence + AckRequested SequenceAcknowledgement TerminateSequence TerminateSequenceResponse
  • 17. Infra 2 tekenen token, bericht eindpunt transport, opslaan
  • 18. ZIM GBZ 1 GBZ 2 app opslag ack ack app
  • 19. WSRM patronen 1-way bidirectional anonymous veel berichten (atom. aanmelden) plaatjes
  • 20. Ontvanger Zender HL7v3 Query 1. Queries HL7v3 Antwoord 2. Bericht zonder antwoord HL7v3 Bericht HL7v3 Accept Acknowledgement HL7v3 Bericht 3. Bericht met antwoord HL7v3 BerichtResponse (Accept or Reject)
  • 21. ZIM GBZ 1 CreateSequence CreateSequenceResponse HL7v3 bericht 1 + AckRequest ack 1 TerminateSequence TerminateSequenceResponse
  • 22. ZIM GBZ 1 CreateSequence CreateSequenceResponse HL7v3 bericht 1 HL7v3 bericht 2 HL7v3 bericht 3 HL7v3 bericht 4 HL7v3 bericht 5 + AckRequest ack 1..5 TerminateSequence TerminateSequenceResponse
  • 23. ZIM GBZ 1 CreateSequence CreateSequenceResponse HL7v3 bericht 1 HL7v3 bericht 2 HL7v3 bericht 3 HL7v3 bericht 4 HL7v3 bericht 5 + AckRequest ack 2..5 HL7v3 bericht 1 + AckRequest ack 1 TerminateSequence TerminateSequenceResponse
  • 24. ZIM GBZ 1 CreateSequence CreateSequenceResponse HL7v3 bericht a1 HL7v3 bericht a2 HL7v3 bericht b1 HL7v3 bericht a3 HL7v3 bericht a4 + AckRequest HL7v3 bericht b2 + ackRequest ack a1..a4 ack b1..b2 TerminateSequence TerminateSequenceResponse
  • 25. ZIM GBZ 1 HTTP Request + HL7v3 bericht 1 HTTP Response + HL7v3 Accept Ack
  • 26. ZIM GBZ 1 CreateSequence CreateSequenceResponse HTTP Request + HL7v3 bericht 1 + AckRequest HTTP Response + ack 1 TerminateSequence TerminateSequenceResponse
  • 27. ZIM GBZ 1 CreateSequence CreateSequenceResponse HTTP Request + HL7v3 bericht 1 + AckRequest HTTP 200 OK HTTP Response + ack 1 HTTP 200 OK TerminateSequence TerminateSequenceResponse
  • 28. Welke communicatiepatronen? anonymous one-way, one message, one ack anonymous one-way, many messages, many acks addressed one-way, many messages, one ack? bidirectional – (nog) niet? alles anonymous?
  • 30. business document business document Envelope Headers: Web Service Sender Web Service Receiver reliability reliability module messaging reliability module messaging security security module security module Payload: transaction module transaction module business document et cetera et cetera
  • 31. Scenario 1: Resending works Sender Receiver Message Duplicate Message Process Message Acknowledgement
  • 32. Scenario 2: Resending fails Sender Receiver Message Process Message Acknowledgement Duplicate Message Process Message Acknowledgement
  • 33. Scenario 3: Reliable messaging Sender Receiver Message Process Message Acknowledgement Duplicate Message Discard Duplicate Acknowledgement
  • 34. Sender’s Transport Module Receiver’s Transport Module Sender’s Business Module Receiver’s Business Module Place Order Order Message Transport Ack Submit Order Accept Order Accept Message Transport Ack Submit Accept
  • 35. GP’s Transport Module Pharmacists Transport Module GP’s Consultation Application Pharmacists Prescription Application Prescription Prescription Prescription prescription.id=x prescription.id=x prescription.id=x Ack prescription Prescription Prescription prescription.id=x Prescription prescription.id=x prescription.id=x Error Error Error prescription.id=x already exists prescription.id=x already exists prescription.id=x already exists