use rocketmq_model::common::message::message_ext::MessageExt;
use rocketmq_model::common::message::message_queue::MessageQueue;
use rocketmq_model::common::message::MessageTrait;
pub(crate) use rocketmq_observability::trace::client::record_process_event;
pub(crate) fn consumer_process_span<'a>(
telemetry: &rocketmq_observability::TelemetryHandle,
messages: impl IntoIterator<Item = &'a MessageExt>,
message_count: usize,
consumer_group: &str,
message_queue: &MessageQueue,
consume_mode: &'static str,
) -> tracing::Span {
let messages = messages.into_iter().map(|message| {
rocketmq_observability::trace::client::MessageSpanContext::new(
message.get_properties(),
message.get_body().map(|body| body.len()),
)
});
rocketmq_observability::trace::client::consumer_process_span(
telemetry,
messages,
message_count,
consumer_group,
message_queue,
consume_mode,
)
}