User Tools
development:applications:ebonding:works
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| development:applications:ebonding:works [2017/02/01 16:36] – 1carew1 | development:applications:ebonding:works [2021/06/25 10:09] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | ====== eBonding - How it Works ====== | ||
| + | Author : Colm Carew | ||
| + | \\ Date : 2017-02-01 | ||
| + | ===== The eBonding Component Standalone ===== | ||
| + | ==== InBound Message ==== | ||
| + | {{ : | ||
| + | |||
| + | To focus on an InBound Message solely from the perspective of the eBonding component what we see is that our eBonding Queue is bound to the soap exchange via the routing key ' | ||
| + | |||
| + | ==== OutBound Message ==== | ||
| + | |||
| + | {{ : | ||
| + | For the outbound message what occurs here is that a Ticketer will publish an event to the Ticket Event Exchange and Tag it with the domain of the event. eBonding is interested in Ticket and Form changes so that is what binds the eBonding Ticket Change queue to the Ticket Event Change Exchange. When eBonding consumes a message from the eBonding Ticket Change Queue it checks to see if it has an eBonded Ticket in it's database relating to the incoming message. If it does not have an eBonded ticket it will forget about the message. It it is interested it will process the message and look for the appropriate message to generate based on the customer associated with the Ticket. | ||
| + | |||
| + | eBonding then publishes the new message (i.e. what we want to send out) onto the Outbound Exchange tagged with the communication type of the Customer, for now just ' | ||
| + | ===== The Overall Picture ===== | ||
| + | ==== InboundMessage ==== | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | So as a whole the Interconnection of the Soap, eBonding and Ticketer for incoming messages works as follows : | ||
| + | |||
| + | - Soap Receives a Message and keeps the HTTP Session open - pulls the customer(Carrier) and validates the message - returns a default fail message when failures/ | ||
| + | - The message makes it to eBonding - eBonding Pulls all relevant data from the incoming message and contacts the Ticketer to see if an open ticket exists | ||
| + | - The Ticketer consumes a message, pulls the action from the header and uses it to process the JSON payload | ||
| + | - The Ticketer returns a JSON string on any information it has on the Ticket - if it exists | ||
| + | - eBonding receives the Ticket information and based on the Incoming Message i.e. if its create, modify, cancel etc. will either generate a response or go to the Ticketer again to create/ | ||
| + | - eBonding generates the Response Message and responds to the callback queue created by Soap | ||
| + | - Soap pulls the message off the callback queue, generates a Soap Message from the message pulled off the callback queue and responds to the HTTP Session with that message | ||
| + | |||
| + | This is a synchronous flow in that Soap waits for a response and the connection is left open - callback queues are used to achieve synchronous messaging. | ||
| + | |||
| + | ==== OutBoundMessage ==== | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | The Outbound message process is Async in that no thread waits for a response message, once it fires the message it no longer cares. | ||
| + | |||
| + | The Outbound message sending works as follows : | ||
| + | |||
| + | - The Ticketer has auitable property set on a domain - in this case Ticket and FormValueChange | ||
| + | - The ticket/form is updated in the Ticketer | ||
| + | - The Audit Provider Picks up on the update and publishes a message to the Ticket Event Change exchange of what has changed and tags it with the domain that has changed. | ||
| + | - The eBonding queue is bound to some of the tags and picks up on the outgoing message | ||
| + | - eBonding determines if the update belongs to an eBonded ticket in it's own database and if it does it retrieves the outgoing message template and generates the appropriate outgoing message | ||
| + | - eBonding publishes the message onto the eBonding Outbound Exchange and tags it with the outgoing tag of the customer (for now lets say soap) | ||
| + | - The Soap Outbound Queue binds to the eBoning Outbound with the binding key ' | ||
| + | - Soap pulls the customer from the header of the RabbitMQ message and then posts the payload of the message to the endpoint associated with the Customer in the Soap Database | ||
| + | - Soap will then get a response from where it posted the message - it may also timeout(configurable) or throw an exception | ||
| + | |||
| + | ===== Example Message From Soap to eBonding InBound ===== | ||
| + | ==== Properties and Headers ==== | ||
| + | < | ||
| + | reply_to: | ||
| + | correlation_id: | ||
| + | headers: | ||
| + | customer: | ||
| + | auth: true | ||
| + | </ | ||
| + | ==== Payload ==== | ||
| + | < | ||
| + | < | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | </ | ||
| + | |||
| + | |||
| + | ===== Example Message from eBonding to Ticketer Inbound ===== | ||
| + | ==== Properties and Headers ==== | ||
| + | < | ||
| + | reply_to: | ||
| + | correlation_id: | ||
| + | headers: | ||
| + | action: | ||
| + | </ | ||
| + | ==== Payload ==== | ||
| + | < | ||
| + | {" | ||
| + | </ | ||
| + | |||
| + | |||
| + | ===== Example Message from Ticketer to eBonding Outbound ===== | ||
| + | ==== Routing Key ==== | ||
| + | < | ||
| + | com.errigal.ticketer.Ticket | ||
| + | </ | ||
| + | ==== Payload ==== | ||
| + | < | ||
| + | {" | ||
| + | </ | ||
| + | |||
| + | ===== Example Message from eBonding to Soap Outbound ===== | ||
| + | ==== Routing Key ==== | ||
| + | < | ||
| + | soap | ||
| + | </ | ||
| + | ==== Payload ==== | ||
| + | < | ||
| + | < | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | & | ||
| + | </ | ||