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)
endConfiguration
Supervisor automatically reads settings from PhoenixKit Settings:
sqs_polling_enabled- enable/disable SQS Workersqs_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
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
Starts supervisor for email tracking system.
Options
:name- supervisor process name (defaults to__MODULE__)
Examples
{:ok, pid} = PhoenixKit.Modules.Emails.Supervisor.start_link()
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
}