Skip to content

Latest commit

 

History

History
35 lines (23 loc) · 1.88 KB

README.md

File metadata and controls

35 lines (23 loc) · 1.88 KB

Ack Logo   Ack Kantox ❤ OSS  Test  Dialyzer

Tiny drop-in for painless acknowledgements across different applications.

About

Ack Message Lifetime

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 Ack to the list of applications started with App1
  • implement Envio.Subscriber 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.

Installation

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, ...]