On my first foray into integration of systems have I identified the following bounded contexts:
- Invoicing
- Subscriptions
- Collections
Specifically for the Collections bounded context 'suspends overdue accounts' feature, we would:
- Get a list of overdue invoices from Invoicing
- Send suspension notice to user (internal e-mailer service)
- Send suspension requested to Subscriptions bounded context
I understand how a blocking web service could be used to integrate the bounded contexts, but I can see this would bring issues in the event the remote service is down.
I am aware of message buses, but not sure how we would integrate with a message strategy:
Would each context contain a local read-model of external bounded context (listen for events from external bounded contexts when they are adding/deleting entities, and correlating via a unique ID)?
If using messages, do we literally build up a local copy of the entity (with fields of use for the local context) from the remote context of interest? Or am I missing something else?