# ExEventBus v1.0.0 - Table of Contents > ExEventBus provides an event bus that uses the outbox pattern. Behind the scenes, it relies on Oban. ## Modules - [ExEventBus](ExEventBus.md): The event bus dispatches events to subscribers. It uses Oban behind the scenes to ensure exactly once delivery. - [ExEventBus.EctoRepoWrapper](ExEventBus.EctoRepoWrapper.md): Wraps the Ecto Repo functions to add event support with the same interface - [ExEventBus.Event](ExEventBus.Event.md): Defines macros to define events - [ExEventBus.ObanDrainer](ExEventBus.ObanDrainer.md): Implements a custom Drainer for Oban that allows to drain jobs specific to a given event handler. - [ExEventBus.Publisher](ExEventBus.Publisher.md): Publishes events to the event bus. - [ExEventBus.State](ExEventBus.State.md): The subscriber registry of an event bus. - [ExEventBus.Testing](ExEventBus.Testing.md): Defines functions to perform event assertions - [ExEventBus.Worker](ExEventBus.Worker.md): This Oban worker handles the ExEventBus events