package tc.oc.api.queue;
import java.io.IOException;
import java.util.logging.Level;
import com.rabbitmq.client.Envelope;
/**
* Information about the delivery of an incoming message.
*
* Also allows delivery to be acknowledged by calling {@link #ack()}.
*/
public class Delivery {
private final QueueClient client;
private final String consumerTag;
private final Envelope envelope;
public Delivery(QueueClient client, String consumerTag, Envelope envelope) {
this.client = client;
this.consumerTag = consumerTag;
this.envelope = envelope;
}
public String consumerTag() {
return consumerTag;
}
public Envelope envelope() {
return envelope;
}
public void ack() {
try {
client.getChannel().basicAck(envelope().getDeliveryTag(), false);
} catch(IOException e) {
client.getLogger().log(Level.SEVERE, "Failed to ACK delivery " + this, e);
}
}
}