Темы RabbitMQ, возвращающие данные - PullRequest
0 голосов
/ 23 марта 2020

Я пытаюсь реализовать вариант C# RabbitMQ и следую их руководству: https://www.rabbitmq.com/tutorials/tutorial-five-dotnet.html.

Однако, когда я пытаюсь изменить код получателя для возврата данных, он не не работает Я попытался возвратить данные, но там написано: " Анонимная функция, преобразованная в пустого возвращающего делегата, не может вернуть значение "

Код, о котором идет речь:

var consumer = new EventingBasicConsumer(channel);
    consumer.Received += (model, ea) =>
    {
        var body = ea.Body;
        var message = Encoding.UTF8.GetString(body);
        var routingKey = ea.RoutingKey;

        Console.WriteLine(" [x] Received '{0}':'{1}'",
                            routingKey,
                            message);

            return message;
        };

1 Ответ

0 голосов
/ 17 апреля 2020

Любой метод с возвращаемым значением void не может вернуть данные. В вашем случае вам придется использовать какой-то другой механизм для передачи сообщения другому потоку для использования. Возможно, используйте ConcurrentQueue.

В целом, однако, люди выполняют ту работу, которую им необходимо выполнить в рамках обратного вызова, чтобы не возвращать само сообщение.

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


ПРИМЕЧАНИЕ: команда RabbitMQ контролирует список рассылки rabbitmq-users и только иногда отвечает на вопросы по StackOverflow.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...