V2 функция azure servicebustrigger не работает

У меня есть проект .NET Standard 2.0, который определяет функции Azure. У меня есть пара функций BlobTrigger и QueueTrigger, которые работают должным образом. Я пытаюсь заменить функции QueueTrigger учетной записи хранения функциями триггеров темы ServiceBus:

[FunctionName("CommandConsumer")]
public static async Task RunAsync([ServiceBusTrigger("commands", "active", Connection = "ServiceBus")]string commandJson, TraceWriter log)
{
    log.Info($"C# ServiceBus topic trigger function processed message: {commandJson}");
}

Эта функция никогда не запускается, даже если восходящие функции успешно добавляют сообщения в тему (я вижу, что у меня сейчас 25 сообщений по теме), и в моем окне консоли отображается много таких сообщений:

[9/13/2018 7:13:29 PM] MessageReceiver error (Action=Receive, ClientId=MessageReceiver1commands/Subscriptions/active, EntityPath=commands/Subscriptions/active, Endpoint=p.servicebus.windows.net)
[9/13/2018 7:14:06 PM] MessageReceiver error (Action=Receive, ClientId=MessageReceiver1commands/Subscriptions/active, EntityPath=commands/Subscriptions/active, Endpoint=p.servicebus.windows.net)
[9/13/2018 7:14:42 PM] MessageReceiver error (Action=Receive, ClientId=MessageReceiver1commands/Subscriptions/active, EntityPath=commands/Subscriptions/active, Endpoint=p.servicebus.windows.net)

Я установил трассировку в режим «Подробная информация», но я не могу получить более подробную информацию об этой ошибке MessageReceiver.

Заранее спасибо!

Изменить: вот соответствующие ссылки на пакеты проекта:

<PackageReference Include="Microsoft.Azure.ServiceBus" Version="3.1.0" />
<PackageReference Include="Microsoft.Azure.WebJobs.Extensions.Storage" Version="3.0.0-beta8" />
<PackageReference Include="Microsoft.Azure.WebJobs.ServiceBus" Version="3.0.0-beta8" />
<PackageReference Include="Microsoft.NET.Sdk.Functions" Version="1.0.19" />

Согласно вашему сообщению об ошибке, вам кажется, что вам нужно проверить тип вашего сообщения при отправке сообщения. Кроме того, какая платформа при отправке сообщения v2.

Joey Cai 14.09.2018 11:52

Ошибок отправки сообщений в тему нет: public async Task<bool> SubmitAsync<T>(IEnumerable<T> commands) where T : Command { var messages = commands.Select(c => new Message(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(c‌​)))); await topicClient.SendAsync(messages.ToList()); return true; }

Florinator 14.09.2018 15:21
2
2
1 497
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Мы допустили ошибку в наших шаблонах Azure и имели дублированные ключи для некоторых ключей доступа KeyVault, что привело к сбою вызова функции Azure из-за «Доступ запрещен» к KeyVault. К сожалению, окно вывода не отображало эти внутренние исключения при локальном запуске, но когда мы запустили тот же код в Azure, мы увидели исключения в потоке Live Metrics Stream и смогли отследить и исправить повторяющиеся ключи.

Другие вопросы по теме