Message carries identifier for resource (person, group, etc.) that has changed.
Does the payload of the message contain a (complete or partial) resource representation as of the time when the message was generated?
Order matters. How do you support that in an async system
We may not want cloud services to do queries back (or the service may not be able to do it, so all the resource info has to be passed
Identifier only preserves loose coupling
Or, here's the info, and here’s a link to it
Are the events finer grained than ‘something changed” about this resource’?; Event types like add, modify...
Should the granularity be as fine as a specific attribute-value change to a specific resource?
Should the granularity as coarse as an abstract “business event” and a bag of metadata along with it?
Message posted on a named channel that is available for opt-in subscription by message consuming endpoints.
Think in terms of delivering a Minimum Viable Product:
EDM with a design that solves the most common problems. Allow others to add their own pieces to solve your specific problem.
Integrating ‘dumb’ cloud services with EDM: Local service wrapper subscribes to messages, does the query for resource representation and then invokes provisioning APIs on the ‘dumb’ cloud service.
Message posted on a named channel that is available for opt-in subscription by message consuming endpoints. Open issue.
Message consumer is responsible for action that follow receipt of the message, for example, it might retrieve a representation of the changed resource, likely via Restful API, or make changes to systems based on information received in the message.
Message payloads must be protected in transit against interception and eavesdropping.
Consider using the Event-sourcing model [1], [2]