together v0.5.0 Together
Group actions that can be handled / responded to later together
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
Start Together.Supervisor
to use it
Start with application configs
supervisor(Together.Supervisor, [])
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, ...])
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
Functions
cancels queued action for the given id
put in a function under the id to be processed (invoked) later
process(name, id, m, f, a)
process(binary | GenServer.server, term, module, atom, list) :: :ok | no_return
put in an mfa
under the id to be processed (applied) later