Event-Driven Data ContractsUsing Explicit Schemas as ContractsSchema Definition CommentsFull-Featured Schema EvolutionCode Generator SupportBreaking Schema ChangesSelecting an Event FormatDesigning EventsTell the Truth, the Whole Truth, and Nothing but the TruthUse a Singular Event Definition per StreamUse the Narrowest Data TypesKeep Events Single-PurposeMinimize the Size of EventsInvolve Prospective Consumers in the Event DesignAvoid Events as Semaphores or SignalsSummary