我有几个Azure函数将消息推送到ServiceBus中,其配置如下:
[FunctionName("UpsertEntity")]
public static async Task<HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Function, "post", Route = "v1/Entity/Upsert")]HttpRequestMessage req,
[ServiceBus("archive", AccessRights.Manage, Connection = "ArchiveQueueConnectionString")] IAsyncCollector<ArchiveMessage> archiveAsyncCollector,
[ServiceBus("crm", AccessRights.Manage, Connection = "CRMQueueConnectionString")] IAsyncCollector<BrokeredMessage> crmAsyncCollector,
TraceWriter log)
...
await archiveAsyncCollector.AddAsync(new ArchiveMessage(ConfigKeys.UpsertEntityMessageLabel, DateTime.UtcNow) { Content = jsonContent });
await crmAsyncCollector.AddAsync(new BrokeredMessage(entity) { Label = ConfigKeys.UpsertEntityMessageLabel });
我可以看到消息确实发布到了ServiceBus上没有问题。 然后,我有两个应该处理它们的函数,但它们似乎从未触发过。该函数定义为:
[FunctionName("ProcessMessage")]
public static void Run([ServiceBusTrigger("crm", AccessRights.Manage, Connection = "CRMQueueConnectionString")]BrokeredMessage message, TraceWriter log)
[FunctionName("ArchiveMessage")]
public async static void Run([ServiceBusTrigger("archive", AccessRights.Manage, Connection = "ArchiveQueueConnectionString")] Messages.ArchiveMessage archiveMessage,
//[Table("MessageArchive")] CloudTable outputTable, TraceWriter log)
TraceWriter log)
似乎都没有被触发,日志也为空,甚至没有异常。
我已经仔细检查了连接字符串是否有效。
可能要想到的一件事是,是否不是某些程序集不匹配,我将功能定位为v1并使用Microsoft.Azure.WebJobs.ServiceBus
包v2.2.0
。
知道我在做什么错吗?
答案 0 :(得分:0)
所以对于像我这样愚蠢的人:
仔细检查host.json
中的白名单,并确保所有功能都列在其中。