4

The event log Since you need to persist the events in the database, the first step is certainly to have a table that just takes everything that comes in. You could call it event_log: event_id node reported_state time_code 10304441 system1 UP 2020-05-05T14:00:00Z 10304446 system1 UP 2020-05-05T14:01:00Z 10304447 ...


2

If you're using event sourcing then create a workflow (saga) from this source startWorkflow(event). = orchestration(event) orchestration(event) = try { callActivity WriteToSql event callActivity WriteToPostgress event } catch { callActivty Compensation event // push to a Queue of compensations to be resolved. } } Compensation ...


1

You are correct that you will need a saga if you are not using a transaction. You will need to accept eventually consistent data though. When it comes to a saga, you have 2 options: Using an orchestrator: A controlling process Choreographed: Each step handles passing on the next or compensating. Using the 2nd method you would store the data + the intent ...


Only top voted, non community-wiki answers of a minimum length are eligible