Together (together v0.5.1)
Group actions that can be handled / responded to later together
what-for
What for?
- group notifications to be sent in one email
- cancel the previously queued email if another event happens within a short period (type: debounce)
- make heavy operations happen less often, i.e. refresh some global statistics
- allow only 1 operation per certain period (type: throttle)
- protect some write api
- additonally you can choose to use the first value in a period (keep: first)
- or the last value in the period (keep: last)
how-to-use
How to use
Start Together.Supervisor
to use it
start-with-application-configs
Start with application configs
supervisor(Together.Supervisor, [])
start-with-configs-passed-in
Start with configs passed in
supervisor(Together.Supervisor, [workers: ..., store: ...])
See Together.Supervisor
for full configuration information
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, ...])
Link to this section Summary
Functions
cancels queued action for the given id
put in a function under the id to be processed (invoked) later
put in an mfa
under the id to be processed (applied) later
Link to this section Functions
Link to this function
cancel(name, id)
@spec cancel(binary() | GenServer.server(), term()) :: :ok | :error
cancels queued action for the given id
Link to this function
process(name, id, func)
@spec process(binary() | GenServer.server(), term(), (... -> any())) :: :ok | no_return()
put in a function under the id to be processed (invoked) later
Link to this function
process(name, id, m, f, a)
put in an mfa
under the id to be processed (applied) later