Можно ли подключиться к указанной c очереди и прочитать указанное количество сообщений? - PullRequest
1 голос
/ 14 апреля 2020

Я пытаюсь создать инструмент обслуживания, который сможет изменять сообщения в очередях. Например в _error очереди. Идея состоит в том, чтобы прочитать определенное количество сообщений из очереди по ее имени. Храните их в файлы. Изменить файлы. Затем прочитайте их с помощью инструмента и опубликуйте sh в указанной очереди.

Нет проблем с публикацией.

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 Ответ

1 голос
/ 14 апреля 2020

Нет способа (с помощью MassTransit) читать отдельные сообщения из очереди.

Вам потребуется использовать клиентскую библиотеку транспорта, чтобы прочитать сообщение (включая заголовки и тело) и записать его в файл. Этот же инструмент можно использовать для отправки сообщения обратно брокеру.

RabbitMQ имеет функцию shovel для перемещения сообщений между очередями, что может помочь. Для Azure Service Bus существует проект ServiceBusExplorer, в котором есть несколько полезных инструментов управления сообщениями.

...