Skip to content

Latest commit

 

History

History
68 lines (50 loc) · 1.78 KB

README.md

File metadata and controls

68 lines (50 loc) · 1.78 KB

ConduitAppsignal

A plug to add Appsignal instrumentation to your conduit pipelines.

Installation

If available in Hex, the package can be installed by adding conduit_appsignal to your list of dependencies in mix.exs:

def deps do
  [{:conduit_appsignal, "~> 0.6.3"}]
end

Usage

In your broker, early in an incoming pipeline, include the ConduitAppsignal.Plug.Transaction. Early in an outgoing pipeline include ConduitAppsignal.Plug.Publish. If you are using Conduit.Plug.Retry, add ConduitAppsignal.Plug.Attempt directly after it. If you want to capture errors, add ConduitAppsignal.Plug.CaptureError before anything that will handle exceptions, like Conduit.Plug.AckException.

# broker.ex
pipeline :in_tracking do
  plug ConduitAppsignal.Plug.Transaction
end

pipeline :out_tracking do
  plug ConduitAppsignal.Plug.Publish
end

pipeline :error_handling do
  plug Conduit.Plug.AckException
  plug Conduit.Plug.DeadLetter, broker: MiddleOut.Broker, publish_to: :error
  plug Conduit.Plug.Retry, attempts: 5
  plug ConduitAppsignal.Plug.Attempt
  plug ConduitAppsignal.Plug.CaptureError
end

incoming MyApp do
  pipe_through [:in_tracking, :error_handling, :deserialize] # Include tracking early

  # subscribes ...
end

outgoing do
  pipe_through [:out_tracking, :serialize] # Include tracking early

  # publishes ...
end

In each subscriber:

defmodule MySubscriber do
  use Conduit.Subscriber
  plug ConduitAppsignal.Plug.Subscriber, subscriber: __MODULE__

  # ...
end

Documentation can be generated with ExDoc and published on HexDocs. Once published, the docs can be found at https://hexdocs.pm/conduit_appsignal.