是否可以连接到特定队列并读取指定数量的消息?

时间:2020-04-14 12:03:38

标签: masstransit

我正在尝试创建一个维护工具,该工具应该能够修改队列中的消息。例如在_error队列中。这个想法是通过队列的名称从队列中读取一些指定数量的消息。将它们存储到文件中。修改文件。比通过工具阅读它们并发布到指定的队列。

发布没有问题。

var sendEndpoint = await _busControl.GetSendEndpoint(new Uri($"rabbitmq://localhost/{sendEndpoint}")).ConfigureAwait(false);
await sendEndpoint.Send(message, messageType).ConfigureAwait(false);

但是我不知道如何读取指定数量的消息。我正在玩这个游戏,但仍然不知道我想阅读的邮件数量有多限制:

_busControl.ConnectReceiveEndpoint(endpointName, cfg =>
        {
            cfg.Handler<T>(context =>
            {
                // some handler logic
                return Task.CompletedTask;
            });
        });

感谢事先提出的​​想法!

1 个答案:

答案 0 :(得分:1)

无法(使用MassTransit)从队列中读取单个消息。

您将需要使用传输客户端库来读取消息(包括标头和正文)并将其写入文件。可以使用相同的工具将消息发送回代理。

RabbitMQ具有 shovel 功能,用于在队列之间移动消息,这可能会有所帮助。对于Azure Service Bus,有一个ServiceBusExplorer项目,其中包含一些有用的消息管理工具。