View Source Ack (ack v0.4.0)
Ack is a tiny application that might be used as drop-in to handle
acknowledgments between processes.
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.
In this scenario, App1 might instruct Ack to listen for the ack from
App2 for a message
%{key: key, timeout: msecs}
where key is the unique identifier of the message to be acknowledged.
Upon receival, if the key is known to the system, Ack will broadcast
the message of the following shape
%{status: :ack, key: key}
to :ack channel. App1 should be subscribed to {Ack.Horn, :ack} channel
in order to receive this message.
If the key is unknown to the system, on of the following possible messages
%{status: :nack, key: key}, when thekeywas explicitly not acked%{status: :invalid, key: key}, when thekeyis not known to the system%{status: :unknown, key: key, value: value}, when somewhat unexpected happened
The former one os routed to {Ack.Horn, :nack} channel, the last two
are broadcasted to {Ack.Horn, :error} channel.
The broadcast is done with Envío
package, consider reading the documentation there to get more details about
subscriptions.
Currently only HTTP endpoint is supported for ack callbacks.
Summary
Functions
Adds a listener for the key with a timeout specified (defaults to 5 sec.)
Types
Functions
Adds a listener for the key with a timeout specified (defaults to 5 sec.)