PhoenixKit.Modules.Emails.Supervisor (phoenix_kit_emails v0.1.8)

Copy Markdown View Source

Supervisor for PhoenixKit email tracking system.

This module manages all processes necessary for email tracking:

  • Kicks off Oban-based SQS polling at boot (see SQSPollingManager)
  • Registers the unified email provider
  • Additional processes (metrics, archiving, etc.)

Integration into Parent Application

Add supervisor to your application's supervision tree:

# In lib/your_app/application.ex
def start(_type, _args) do
  children = [
    # ... your other processes

    # PhoenixKit Email Tracking
    PhoenixKit.Modules.Emails.Supervisor
  ]

  opts = [strategy: :one_for_one, name: YourApp.Supervisor]
  Supervisor.start_link(children, opts)
end

Configuration

Supervisor automatically reads settings from PhoenixKit Settings:

  • sqs_polling_enabled - enable/disable SQS Worker
  • sqs_polling_interval_ms - polling interval
  • other SQS settings

Process Management

SQS polling is driven entirely by Oban (see SQSPollingManager) and can be toggled at runtime without an application restart:

# Stop polling
PhoenixKit.Modules.Emails.SQSPollingManager.disable_polling()

# Start polling
PhoenixKit.Modules.Emails.SQSPollingManager.enable_polling()

# Check status
PhoenixKit.Modules.Emails.SQSPollingManager.status()

Monitoring

Supervisor provides information about process state:

# Get list of child processes
Supervisor.which_children(PhoenixKit.Modules.Emails.Supervisor)

# Get process count
Supervisor.count_children(PhoenixKit.Modules.Emails.Supervisor)

Summary

Functions

Returns child spec for integration into parent supervisor.

Starts supervisor for email tracking system.

Returns information about email tracking system status.

Functions

child_spec(init_arg)

Returns child spec for integration into parent supervisor.

This function is used when you want more precise control over email tracking integration in your application.

Examples

# In lib/your_app/application.ex
def start(_type, _args) do
  children = [
    # ... other processes
    PhoenixKit.Modules.Emails.Supervisor.child_spec([])
  ]

  Supervisor.start_link(children, strategy: :one_for_one)
end

start_link(opts \\ [])

Starts supervisor for email tracking system.

Options

  • :name - supervisor process name (defaults to __MODULE__)

Examples

{:ok, pid} = PhoenixKit.Modules.Emails.Supervisor.start_link()

system_status(supervisor \\ __MODULE__)

Returns information about email tracking system status.

Examples

iex> PhoenixKit.Modules.Emails.Supervisor.system_status()
%{
  supervisor_running: true,
  polling_status: %{enabled: true, pending_jobs: 1, ...},
  children_count: 0
}