Base publisher
@callback publish(payload :: map() | list()) :: :ok | none()
@callback publish( payload :: map() | list(), options :: Keyword.t() ) :: :ok | none()