# 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,
      {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}

defmodule ExampleCommandedApp do

  use Application

  def start(_, _) do
    children = [
      {Commanded.Registration.HordeRegistry.Linker, [horde_name: Commanded.Registration.HordeRegistry]},
      {Commanded.Registration.HordeRegistry.Linker, [horde_name: ExampleCommandedApp.EventHandlerSupervisor]},


## Installation

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"}

Documentation can be generated with [ExDoc](
and published on [HexDocs]( Once published, the docs can
be found at [](

## 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