View Source WhiteRabbit.Processor behaviour (White Rabbit v0.2.0)

Processor behavior that modules can use to implememnt common callbacks to consume message payloads.

To use:

defmodule MyApp.JsonMessageProcessor do
  @behaviour WhiteRabbit.Processor

  def consumer_payload(payload, meta) do
    %{delivery_tag: tag, redelivered: redelivered} = meta

    case content_type do
      "application/json" ->
        {:ok, _json} = Jason.decode(payload)

        # If successful, send back `{:ok, AMQP.Basic.delivery_tag()}`
        {:ok, tag}

      _ ->
        {:error, :things_went_south}
    end
  end
end

Link to this section Summary

Link to this section Types

@type consume_error() :: {:error, {tag(), keyword()}}
@type processor_meta() :: map()
@type processor_payload() :: any()
@type tag() :: AMQP.Basic.delivery_tag()

Link to this section Callbacks

Link to this callback

consume_payload(processor_payload, processor_meta)

View Source
@callback consume_payload(processor_payload(), processor_meta()) ::
  {:ok, tag()} | consume_error()

Callback function to process payload from a message.

Must return {:ok, delivery_tag()} tuple to allow for proper ack.

Or {:error, reason} tuple for rejects.

Link to this callback

handle_after_ack()

View Source (optional)
@callback handle_after_ack() :: {:ok, any()} | {:error, any()}
Link to this callback

handle_after_reject()

View Source (optional)
@callback handle_after_reject() :: {:ok, any()} | {:error, any()}