Skip to main content
An incident agent notifies affected customers. Each customer should hear once, however many times the batch is retried or however many workers pick it up. A batch beyond a certain size is a person’s decision, because a wrong message to ten thousand customers is not cheap to undo.

The policy

runnable

The code

runnable file=main.py

What the agent sees

Three customers, three messages, after a retry and a racing worker. The effect key names the customer and the incident, so the same customer in a different incident is a new effect.

The receipt

runnable
Ten receipts for the notifications: three committed, six blocked as duplicates, and the batch. ctrlrun effects lists one effect per customer.

When an AMBIGUOUS appears

A notification whose reply was lost may have been delivered. Check the provider’s delivery log for the customer, then ctrlrun resolve notify:inc_7:c_N --committed or --failed. If the provider accepts an idempotency key, pass the effect key as it, and the resolution is nearly always --committed.

Next