Возможно ли использовать IAsyncCollector без зависимости от azure веб-заданий? - PullRequest
1 голос
/ 06 января 2020

Я пишу библиотеку различных бизнес-логи c и хотел бы, чтобы это было в состоянии взаимодействовать с azure функциями. Я хотел бы получить приемник сообщений для уведомлений, которые хочет создать мой код, и IAsyncCollector выглядит как разумный интерфейс (который имеет почти тривиальное определение интерфейса вызова функции), который также может быть тривиально предоставлен мне в функции azure приложение звонки.

Возможно ли для библиотеки, которую я пишу, принять IASyncColector без необходимости добавления всех azure веб-заданий в качестве зависимости для моей библиотеки только для этого одного интерфейса?

В качестве альтернативы должен ли внутренний код просто генерировать сообщения и возвращать их хосту для добавления в сборщик, даже если это грязный код, требующий переноса каждого вызова функции в 'foreach'?

https://github.com/Azure/azure-webjobs-sdk/blob/master/src/Microsoft.Azure.WebJobs/IAsyncCollector.cs

1 Ответ

0 голосов
/ 08 января 2020

Предположим, вы хотите получить сборщик сообщений, если существует несколько сообщений. Однако я не знаю, почему вы хотите использовать IAsyncCollector, потому что описание этого типа предназначено только для записи, вы можете проверить do c: Запись нескольких выходных значений .

И если вы не хотите использовать webjob sdk, это означает, что вы не можете использовать привязку хранилища, и вы все равно хотите выполнять действия с несколькими сообщениями:

Получать сообщения, использовать GetMessages * Метод 1009 *, он вернет перечисляемую коллекцию сообщений.

Отправьте сообщения, просто используйте List, затем l oop it и выполните действие add, или просто привяжите тип CloudQueue и используйте AddMessage метод.

            CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient();
            CloudQueue queue1 = queueClient.GetQueueReference("myqueue");
            CloudQueue queue2 = queueClient.GetQueueReference("queue1");
            IEnumerable<CloudQueueMessage> messages= queue1.GetMessages(10);
            List<CloudQueueMessage> messages1=new List<CloudQueueMessage>();
            foreach (var message in messages) {
                Console.WriteLine(message.AsString);
                messages1.Add(message);
            }
            foreach (var message in messages1) {
                queue2.AddMessage(message);
            }

Надеюсь, это поможет вам, если у вас все еще есть другие проблемы, связанные с использованием IAsyncCollector, пожалуйста, дайте мне знать.

...