Skip to content

conduitframework/conduit_appsignal

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

About

Incorporates AppSignal instrumentation into Conduit

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages