Skip to content
/ ack Public

Tiny drop-in for painless acknowledgements across different applications.

Notifications You must be signed in to change notification settings

am-kantox/ack

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

About

Tiny drop-in for painless acknowledgements across different applications.

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages