View Source Configuration
amqp-connection
AMQP connection
Roger depends on RabbitMQ as its backing store. The minimum configuration is below:
config :roger,
amqp: [
host: "localhost",
port: 5672
]These options are directly forwarded to the AMQP connection. The most common options are:
:username- The name of a user registered with the broker (defaults to "guest");:password- The password of user (defaults to "guest");:virtual_host- The name of a virtual host in the broker (defaults to "/");:host- The hostname of the broker (defaults to "localhost");:port- The port the broker is listening on (defaults to5672);:channel_max- The channel_max handshake parameter (defaults to0);:frame_max- The frame_max handshake parameter (defaults to0);:heartbeat- The hearbeat interval in seconds (defaults to0- turned off);:connection_timeout- The connection timeout in milliseconds (defaults toinfinity);:ssl_options- Enable SSL by setting the location to cert files (defaults tonone);:client_properties- A list of extra client properties to be sent to the server, defaults to[];
worker-callbacks
Worker callbacks
Roger can be configured with a callback module which invoke functions on various places in a job's life cycle.
config :roger,
callbacks: MyWorkerModuleIn this scenario, MyWorkerModule needs to use Roger.Worker.Callback:
defmodule MyWorkerModule do
use Roger.Partition.Worker.Callback
def after_run(_app_id, job, result, _state) do
IO.puts("Job #{job.id} succeeded with: #{inspect result}")
end
endIn this worker module, you can implement the functions before_run/2,
after_run/4, on_error/4, on_cancel/2 and on_buried/4 to
respond to job events.
See Roger.Partition.Worker.Callback for the full documentation on
these functions.
state-persistence-callbacks
State persistence callbacks
Each Roger partition has one global process running in the cluster,
which holds some information necessary to implement certain features
(see Roger.Partition.Global for details).
It provides hooks to persist the information between partition / node restarts. By default, the global state is loaded from and written to the filesystem, but it is possible to override the persister, like this:
config :roger,
persister: Your.PersisterModuleThe persister module must implement the
Roger.Partition.Global.StatePersister behaviour, which provides
simple load and save functions.