On Wed, Nov 26, 2008 at 1:49 AM, Udi Dahan <[EMAIL PROTECTED]> wrote: > > In my example of EDA/SOA (from a previous email), I described a Sales > service, a Fulfilment service, and a Billing service. > > Sales publishes an OrderAccepted event when it accepts and order, containing > all order information. > > Both Fulfilment and Billing are subscribed to this event. > > After Billing has billed the customer, it publishes a CustomerBilled event > containing all billing information and the Id (or multiple Ids) of the > order(s) billed. > > [This is not a self-contained message as it doesn't contain the full order > information] > > Fulfilment is also subscribed to the CustomerBilled event, and only ships > orders to customers that have been both accepted and billed. > > Even though Fulfilment doesn't receive the order information in the > CustomerBilled event, it can easily do the correlation between the events > using the order Ids. > > > > In this case, the non-fully-self-contained message doesn't lead to, or imply > any architectural problems. >
The way I understood the original post is that the data reference was to a different system. So passing an order number that would be used to look up the order in another system. A customer ID might be a better example. If you only pass an ID in a ObtainSomeResource event message you could hit a timing issue. When the customer requested the resource they were entitled to it. However, by the time the message was processed their subscription was no longer valid. The service processing the ObtainSomeResource message would look up the customer and deny the request. Or maybe the customer's address or email changed. In your example the full message was sent out earlier and probably stored by the Fulfillment service. The CustomerBilled message then triggers the Fulfillment service to act on a prior message. The thing that stands out in your example is that the Billing service has some implied knowledge about the Fulfillment service. It knows that either the Fulfillment service is subscribed to the OrderAccepted message or knows how to lookup the order. Can this be a bad thing? -- David http://www.traceback.org
