如何获取MassTransit IBus的大小(消息数)
本文关键字:消息 MassTransit 何获取 获取 IBus | 更新日期: 2023-09-27 18:19:26
我正在使用MassTransit库的InMemoryMessageBus
,我想知道如何获得队列中的消息数量(总线的大小)。
使用内存中传输的任何特定队列中的消息数都不可用。消息传递基于排队的任务调度程序,并且消息计数尚未可用。我不确定他们是否可以(好吧,很容易。任何事情都有可能,但实际是另一回事)。
更新:这已添加到MassTransit中,并将在下一个版本(3.5.x)中发布。跟踪问题在GitHub上,包括新代码的示例使用。
如果使用RabbitMQ作为传输,则可以使用HareDu。以下片段将帮助您开始:
var client = HareDuFactory.New(x => x.ConnectTo(RabbitMqHostUrl));
var data = client
.Factory<VirtualHostResources>(y => y.Credentials(RabbitMqUser, RabbitMqPass))
.Queue
.GetAll()
.Data();
foreach (var queue in data)
{
/*then you can access
queue.Name, queue.VirtualHostName, queue.Memory, queue.Messages,
queue.MessagesReady, queue.MessagesUnacknowledged, queue.Node, queue.IsDurable, queue.Consumers, queue.IdleSince */
}