I’m looking for an event bus library that reliably implements Outbox pattern, i.e. can guarantee that if the publishing function finished its execution, then a message will be delivered at least once to every subscriber.
That includes postponing parent shutdown until getting an acknowledgement from the storage that an event was successfully persisted.
Are the messages to be published to an external service or inside the same Elixir system?
For the Outbox pattern we use Oban as it has retry built-in. If you are publishing to services like Kafka or RabbitMQ you still have to trust the service to deliver the message if the publishing function returns.