是否有可能使用IAsyncCollector而不依赖于天蓝色的webjobs?

问题描述 投票:1回答:1

我正在编写一个包含各种业务逻辑的库,并希望它能够与azure函数进行接口。我想收到一个消息接收器,用于接收我的代码希望产生的通知,并且IAsyncCollector似乎是一个合理的接口(它具有接近2个琐碎的函数调用接口定义),也可以在azure函数app调用中简单地提供给我。

我正在编写的库是否有可能接受IASyncColector,而不必为该接口仅添加所有天蓝色的webjob作为我的库的依赖项?

或者,内部代码应该只是生成消息,然后将它们返回给主机以添加到收集器,即使那是凌乱的代码,也需要将每个函数调用包装在'foreach'中?

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

azure azure-functions azure-webjobssdk
1个回答
0
投票

如果有多个消息,则要获取消息收集器。但是我不知道为什么要使用IAsyncCollector,因为有关此类型的描述是只写集合,您可以检查doc:Writing multiple output values

并且,如果您不想使用webjob sdk,则意味着您无法使用存储绑定,而您仍想对多封邮件进行操作:

[接收消息,使用GetMessages方法,它将返回一个可枚举的消息集合。

发送消息,只需使用列表,然后循环执行它并执行添加操作,或者仅绑定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,请告诉我。

© www.soinside.com 2019 - 2024. All rights reserved.