Together 
Group actions that need to be performed later together
Links
What for?
- group notifications before sending an email about them
- only sending the very last value of a fast changing entity (renew: true)
- only using the very first value of a changing entity in every fixed period (renew: false)
Installation
The package can be installed as:
Add together to your list of dependencies in mix.exs:
def deps do
[{:together, "~> 0.1.0"}]
endHow to use
Start a Together.Worker to use it
You can start it by adding a worker to your app's supervision tree
worker(Together.Worker, [[delay: 3000, renew: true], [name: Together.Worker]])Or start it as you would any other GenServer
{:ok, pid} = Together.Worker.start_link(delay: 300, renew: true)Make calls to the worker process:
Together.process(pid, "some_unique_name_or_id", a_function)Together.process(pid, "id", Module, :func, [arg1, arg2, ...])Together.process("something", some_func)you can omit the pid if the server is started with nameTogether.Worker
TODO
- value accumulation
- pooling
- distributed buffer