Current section
Files
Jump to
Current section
Files
README.md
# Ack[](https://circleci.com/gh/am-kantox/ack) **Tiny drop-in for painless acknowledgements across different applications.**## AboutTo 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 `Ack` to the list of applications started with `App1`- implement [`Envio.Subscriber`](https://hexdocs.pm/envio/Envio.Subscriber.html) in `App1`, listening to any of three following channels: - `{Ack.Horn, :ack}` - `{Ack.Horn, :nack}` - `{Ack.Horn, :error}`- implement `App2` to `HTTP POST` to `App1.domain:30009` one of two requests (assuming `key` is somewhat negotiated upgront and known to `App1`): - `%{"key" => key, "value" => "ack"}` to `ack`, or - `%{"key" => key, "value" => "nack"}` to `nack`That’s it.## InstallationThe package can be installed by adding `ack` to your list of dependencies **and** applications in `mix.exs`:```elixirdef deps, do: [{:ack, "~> 0.1"}, ...]def applications, do: applications: [:logger, ..., :ack, ...]```## [Documentation](https://hexdocs.pm/ack)