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 thekey
was explicitly not acked%{status: :invalid, key: key}
, when thekey
is 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.)