CommandedHordeRegistry
Process registration and distribution via Horde
In order to use this, you will need to update the following config values:
config :commanded,
registry: Commanded.Registration.HordeRegistry,
aggregate_supervisor_mfa:
{Horde.Supervisor, :start_link,
[[name: Commanded.Aggregates.Supervisor, strategy: :one_for_one]]}
You will also need to join the Supervisors together (connecting them via Distributed Erlang is not
enough) via Horde.Cluster as documented. Starting a Commanded.Registration.HordeRegistry.Linker
in your supervision tree will accomplish this, and has the added benefit of continually checking
the cluster for new members and joining them.
Example Usage
To correctly handle dynamic cluster membership or node down events, you will
need to start a Commanded.Registration.HordeRegistry.Linker process per a
Horde.Supervisor or Horde.Registry.
defmodule ExampleCommandedApp.EventHandlerSupervisor do
use Horde.Supervisor
def init(_) do
cluster_members = Commanded.Registration.HordeRegistry.get_cluster_members(__MODULE__)
opts = [members: cluster_members, distribution_strategy: Horde.UniformDistribution]
{:ok, opts}
end
end
defmodule ExampleCommandedApp do
use Application
def start(_, _) do
children = [
{Commanded.Registration.HordeRegistry.Linker, [horde_name: Commanded.Registration.HordeRegistry]},
ExampleCommandedApp.EventHandlerSupervisor,
{Commanded.Registration.HordeRegistry.Linker, [horde_name: ExampleCommandedApp.EventHandlerSupervisor]},
]
end
endInstallation
If available in Hex, the package can be installed
by adding commanded_horde_registry to your list of dependencies in mix.exs:
def deps do
[
{:commanded_horde_registry, "~> 0.4.0"}
]
endDocumentation can be generated with ExDoc and published on HexDocs. Once published, the docs can be found at https://hexdocs.pm/commanded_horde_registry.
Development Status
Commanded and Horde have released updates so this is ready for testing. Once I’m confident it works I’ll push a 1.0 release