[英]Azure WebJob Queues are not triggering WebJobs
如果将二进制格式的消息传递给队列,Azure WebJob队列不会触发WebJobs?
我已经将GOOGLE PROTOBUF字节作为CloudMessage推送到 Azure队列存储中。 但是,Azure队列存储是否无法ping通并将CloudMessage传递到运行WebJob的Azure持续运行,而不是将那些消息移至“毒药队列”?
以下代码是我用于缓冲队列消息的WebJob。
程序文件:
public class Program
{
// Please set the following connection strings in app.config for this WebJob to run:
// AzureWebJobsDashboard and AzureWebJobsStorage
public static void Main()
{
try
{
JobHost host = new JobHost();
//Following code ensures that the WebJob will be running continuously
host.RunAndBlock();
}
catch (Exception ex)
{
throw ex;
}
}
}
Function.cs
public class Function
{
//This function will get triggered/Executed when new message is written on an Azure Queue called messagequeue
public static void ProcessMessageQueue([QueueTrigger("messagequeue")] string message)
{
#region WebAPI Call
#endregion
}
}
用于将消息字节添加到Azure队列的代码:
private void PushPayloadBytesToAzureQueueStorage(byte[] payload)
{
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(ConfigurationManager.AppSettings["AzureWebJobsStorage"]);
CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient();
CloudQueue queue = queueClient.GetQueueReference("messagequeue");
queue.CreateIfNotExists();
CloudQueueMessage msg = new CloudQueueMessage(payload);
queue.AddMessage(msg);
}
我的情况是,我将消息添加为队列中的字节,然后该队列存储必须发送一条消息并触发在Azure云中发布/运行的Web作业 。
我对下面的方法签名有疑问。
public static void ProcessMessageQueue([QueueTrigger("messagequeue")] string message)
由于消息已成功添加到队列存储中,但是队列未触发Azure功能,并且所有队列消息都移至Poison Queue,因此上述方法签名中的message参数应该使用哪种数据类型。
我在这里想念什么?
感谢您对此的想法。
提前致谢!
根据您的代码,我检查了此问题。 我将payload
作为System.Text.UTF8Encoding.UTF8.GetBytes("hello world " + DateTime.Now)
传递,然后可以在ProcessMessageQueue
函数下检索字符串参数message
。
作为如何在收到队列消息时触发功能的状态如下:
除了
string
之外,该参数还可以是您定义的字节数组,CloudQueueMessage
对象或POCO。
对于字节数组或CloudQueueMessage
参数,可以参考以下代码片段:
System.Text.UTF8Encoding.UTF8.GetString(message); //for byte array
System.Text.UTF8Encoding.UTF8.GetString(message.AsBytes); //for CloudQueueMessage object
Azure队列存储没有ping通该CloudMessage并将其传递到我的持续运行WebJob的Azure,而是这些消息移到了Poison Queue?
WebJobs SDK最多可以处理5次功能来处理您的队列消息。 该消息将被移至中毒队列,有关更多详细信息,请参阅如何处理中毒消息下的描述。
我假设您需要检查输入的编码格式。 您也可以在天蓝色存储下查看日志,更多详细信息,请点击此处 。 此外,您还可以在ProcessMessageQueue
函数中使用try-catch-throw
来缩小此问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.