Struct metalmq_client::ConsumerHandler
source · pub struct ConsumerHandler {
pub channel: ChannelNumber,
pub consumer_tag: String,
pub signal_stream: UnboundedReceiver<ConsumerSignal>,
/* private fields */
}
Expand description
Consumer API for Basic.Consume
.
ConsumerHandler
can be get by invoking Channel::basic_consume
.
Fields§
§channel: ChannelNumber
The channel number we are consuming messages. One client can have one consumer per channel.
consumer_tag: String
Identifier of the consumer in server.
signal_stream: UnboundedReceiver<ConsumerSignal>
From this signal stream the consumer gets the messages as ConsumerSignal
values and can
handle them by acking messages or handling channel or connection close events.
Implementations§
source§impl ConsumerHandler
impl ConsumerHandler
After consuming started with ConsumerHandler
one can ack, nack or reject messages.
use metalmq_client::{Channel, ConsumerSignal, Exclusive, NoAck, NoLocal};
async fn consume(channel: Channel) {
let mut handler = channel.basic_consume("queue", NoAck(false), Exclusive(false),
NoLocal(false)).await.unwrap();
while let Some(signal) = handler.signal_stream.recv().await {
match signal {
ConsumerSignal::Delivered(m) => {
handler.basic_ack(m.delivery_tag).await.unwrap();
}
ConsumerSignal::Cancelled | ConsumerSignal::ChannelClosed { .. } |
ConsumerSignal::ConnectionClosed { .. } => {
break;
}
}
}
}