KantanCluster View Source

かんたんクラスター

Hex version API docs CI

Form a simple Erlang cluster easily in Elixir.

Documentation can be found at https://hexdocs.pm/kantan_cluster.

Getting started

Add kantan_cluster to your list of dependencies in mix.exs:

def deps do
  [
    {:kantan_cluster, "~> 0.3"}
  ]
end

Start a node and connect it to other nodes based on specified options.

iex> KantanCluster.start(
  node: "node1",
  cookie: :hello,
  connect_to: [:"nerves@nerves-mn00.local"]
)
:ok

iex(node1@My-Machine.local)>

Alternatively, options can be loaded from your config/config.exs.

config :kantan_cluster,
  node: "node1",
  cookie: :hello,
  connect_to: [:"nerves@nerves-mn00.local"]

kantan_cluster starts a server that monitors the connection per node name under a DynamicSupervisor.

kantan_cluster monitors all the connected nodes and attempts to reconnect them automatically in case they get disconnected.

You can connect to or disconnect from a node on demand.

KantanCluster.connect(:"nerves@nerves-mn01.local")

KantanCluster.disconnect(:"nerves@nerves-mn01.local")

For cleanup, just call KantanCluster.stop/0, which will stop the node and all the connections.

Publish–subscribe

# Subscribes the caller to the PubSub adapter's topic.
KantanCluster.subscribe("users:123")

# Broadcasts message on given topic across the whole cluster.
KantanCluster.broadcast("users:123", {:hello, Node.self()})

Acknowledgements

Some code is adopted from or inspired by livebook.