Tiny drop-in for painless acknowledgements across different applications.
To implement ack support between two applications, one might use Ack application with a very little amount of code needed.
Imagine we have two applications, App1 and App2 as shown above. When App1 sends something to App2 it might require the acknowledgement back confirming the successful processing of this something. For instance, App1 might call an API endpoint of App2, which triggers a long process, or it might place a message into RabbitMQ and expect to receive an ack to perform some cleanup, or whatever.
Using Ack, one should only:
- add
Ackto the list of applications started withApp1 - implement
Envio.SubscriberinApp1, listening to any of three following channels:{Ack.Horn, :ack}{Ack.Horn, :nack}{Ack.Horn, :error}
- implement
App2toHTTP POSTtoApp1.domain:30009one of two requests (assumingkeyis somewhat negotiated upgront and known toApp1):%{"key" => key, "value" => "ack"}toack, or%{"key" => key, "value" => "nack"}tonack
That’s it.
The package can be installed by adding ack to your list of dependencies and applications in mix.exs:
def deps, do: [{:ack, "~> 0.1"}, ...]
def applications, do: applications: [:logger, ..., :ack, ...]
