Group things together!
Group actions that can be handled / responded to later together
The package can be installed as:
Add together
to your list of dependencies in mix.exs
:
def deps do
[{:together, "~> 0.5"}]
end
Since ex_shards uses shards, if you are still using applications
instead of the new extra_applications
,
which infers applications list, make sure that shards is added to the list:
def application do
[applications: [:shards]]
end
Start Together.Supervisor
to use it
supervisor(Together.Supervisor, [])
supervisor(Together.Supervisor, [workers: ..., store: ...])
Make calls to the worker process:
Together.process(binary_name, "something_unique", some_func)
Together.process(pid, "some_unique_name_or_id", a_function)
Together.process(Together.Worker, "id", Module, :func, [arg1, arg2, ...])
config :together,
workers: [
# name is required, can be anything, prefer strings
[name: "throttled_job", delay: 30_000, type: :throttle],
[name: "debounced_job", delay: 5_000, type: :debounce],
[name: "keep_first_job", keep: :first],
# etc
],
# omissible, if you don't want to change anything
store: [
# name for the Store process
name: MyApp.Together.Store,
# name for the ExShards main process
shards_name: MyApp.Together.Store.Shards,
# for distributed ets
scope: :g,
# nodes in the cluster, will use `Node.list` if omitted
nodes: [:"[email protected]", :"[email protected]"]
]
gen_stage
territory)