@callback consume(map() | binary()) :: :ok | {:ok, any()} | :error | {:error, any()}
@callback consume([map() | binary()], :batch) :: :ok | {:ok, any()} | :error | {:error, any()}