Commanded v1.0.0-rc.0 Commanded.Registration behaviour View Source

Defines a behaviour for a process registry to be used by Commanded.

By default, Commanded will use a local process registry, defined in Commanded.Registration.LocalRegistry, that uses Elixir's Registry module for local process registration. This limits Commanded to only run on a single node. However the Commanded.Registration behaviour can be implemented by a library to provide distributed process registration to support running on a cluster of nodes.

Link to this section Summary

Functions

Allow a registry provider to handle the standard GenServer callback functions.

Use the Commanded.Registration module to import the registry provider and via tuple functions.

Get the configured process registry.

Callbacks

Return an optional supervisor spec for the registry

Starts a uniquely named child process of a supervisor using the given module and args.

Starts a uniquely named GenServer process for the given module and args.

Return a :via tuple to route a message to a process by its registered name

Get the pid of a registered name.

Link to this section Types

Link to this type

start_child_arg()

View Source
start_child_arg() :: {module(), keyword()} | module()

Link to this section Functions

Link to this macro

__before_compile__(env)

View Source (macro)

Allow a registry provider to handle the standard GenServer callback functions.

Link to this macro

__using__(opts)

View Source (macro)

Use the Commanded.Registration module to import the registry provider and via tuple functions.

Link to this function

registry_provider(application, config)

View Source
registry_provider(application :: module(), config :: Keyword.t()) :: module()

Get the configured process registry.

Defaults to a local registry, restricted to running on a single node.

Link to this section Callbacks

Link to this callback

child_spec(registry, config)

View Source
child_spec(registry :: module(), config :: Keyword.t()) :: [
  :supervisor.child_spec()
]

Return an optional supervisor spec for the registry

Link to this callback

start_child(registry, name, supervisor, child_spec)

View Source
start_child(
  registry :: module(),
  name :: term(),
  supervisor :: module(),
  child_spec :: start_child_arg()
) :: {:ok, pid()} | {:error, term()}

Starts a uniquely named child process of a supervisor using the given module and args.

Registers the pid with the given name.

Link to this callback

start_link(registry, name, module, args)

View Source
start_link(
  registry :: module(),
  name :: term(),
  module :: module(),
  args :: any()
) :: {:ok, pid()} | {:error, term()}

Starts a uniquely named GenServer process for the given module and args.

Registers the pid with the given name.

Link to this callback

supervisor_child_spec(registry, module, arg)

View Source
supervisor_child_spec(registry :: module(), module :: atom(), arg :: any()) ::
  :supervisor.child_spec()

Use to start a supervisor.

Link to this callback

via_tuple(registry, name)

View Source
via_tuple(registry :: module(), name :: term()) ::
  {:via, module(), name :: term()}

Return a :via tuple to route a message to a process by its registered name

Link to this callback

whereis_name(registry, name)

View Source
whereis_name(registry :: module(), name :: term()) :: pid() | :undefined

Get the pid of a registered name.

Returns :undefined if the name is unregistered.