Я создал тестовую функцию Azure с триггером очереди.Когда я запускаю эту функцию в локальном эмуляторе, она работает.Но когда я развертываю его в Azure, похоже, что он не работает (сообщения не удаляются из очереди).
Функция
[FunctionName("Function1")]
public static void Run([QueueTrigger("azurefunc", Connection = "StorageConnectionString")]string myQueueItem, TraceWriter log)
{
log.Info($"C# Queue trigger function processed: {myQueueItem}");
// PERFORMANCE TEST
for (int i = 0; i < 10000; i++)
{
for (int j = 0; j < 9000; j++)
{
// Do nothing.
// Or do something
string myAwesomeTempString = "How are you";
myAwesomeTempString += "?";
}
}
try
{
var queueMessage = new CloudQueueMessage (myQueueItem);
QueueApi.DeleteMessage (QueueApi.AzureFunctionStorageQueue, queueMessage);
}
catch
{
}
}
local.settings.json
{"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "AZURE_STORAGE_CONNECTION_STRING",
"AzureWebJobsDashboard": "AZURE_STORAGE_CONNECTION_STRING",
"StorageConnectionString": "AZURE_STORAGE_CONNECTION_STRING",
"serviceBusAccount": "SERVICE_BUS_CONNECTION_STRING"
}}
Часть QueueApi
/// <summary>
/// Creates instance of Queue Storage
/// </summary>
/// <param name="queueName">Name of queue storage</param>
/// <returns>The instance of queue storage</returns>
private static CloudQueue CreateStorageQueue (string queueName)
{
CloudStorageAccount storageAccount = CloudStorageAccount.Parse ("AZURE_STORAGE_CONNECTION_STRING");
CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient ();
CloudQueue queue = queueClient.GetQueueReference (queueName);
queue.CreateIfNotExists ();
return queue;
}
/// <summary>
/// Deletes message from queue.
/// </summary>
/// <param name="queue">The queue storage instance</param>
/// <param name="message">Message to be deleted</param>
public static void DeleteMessage (CloudQueue queue, CloudQueueMessage message)
{
CheckInstances ();
if (message != null)
{
queue.DeleteMessage (message);
}
}
Я создал Azure Service Bus учетную запись только для проверки другойподход, но я действительно предпочел бы использовать Azure Storage Queue .
Может кто-нибудь помочь мне?
Большое спасибо