- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用推荐的设置运行 azure webjobs SDK 控制台应用程序(连续):
public static void ProcessQueueMessage([QueueTrigger("logqueue")] string logMessage, TextWriter logger)
我正在运行的 Azure 队列中有大约 6000 条消息,并且我正在本地运行 Web 作业,作为控制台应用程序。
我遇到的问题是,在处理 0 到 30 条消息后,处理会随机停止。控制台保持打开状态,但不再显示控制台消息。
例如,它可能只处理 2 条消息:
Executing: 'Functions.ProcessQueueMessage' - Reason: 'New queue message detected on 'QueueName'.'
Executed: 'Functions.ProcessQueueMessage' (Succeeded)
Executing: 'Functions.ProcessQueueMessage' - Reason: 'New queue message detected on 'QueueName'.'
Executed: 'Functions.ProcessQueueMessage' (Succeeded)
然后就什么都没有了。我的互联网连接似乎没有任何问题,而且我无法将问题追溯到任何特定消息。
还有其他人遇到过此 SDK 的问题吗?
更新:
我通过删除 nuget 包然后重新运行安装包 Microsoft.Axure.Webjobs 来确保使用所有依赖项的正确版本。我现在使用的是 webjobs 版本 1.1.0,它引入了 Azure 存储版本 4.3。
按照 Matthew 的建议,我已经下载了 azure webjobs 的源代码,以确定进程在哪里卡住。一旦发生卡住,我就会暂停执行并检查正在运行的线程,以查找我认为是 Microsoft.Azure.WebJobs.Host.CompositeTraceWriter
中的罪魁祸首。
protected virtual void InvokeTextWriter(TraceEvent traceEvent)
{
if (_innerTextWriter != null)
{
string message = traceEvent.Message;
if (!string.IsNullOrEmpty(message) &&
message.EndsWith("\r\n", StringComparison.OrdinalIgnoreCase))
{
// remove any terminating return+line feed, since we're
// calling WriteLine below
message = message.Substring(0, message.Length - 2);
}
_innerTextWriter.WriteLine(message);
if (traceEvent.Exception != null)
{
_innerTextWriter.WriteLine(traceEvent.Exception.ToDetails());
}
}
}
它卡住的行是第 66 行:_innerTextWriter.WriteLine(message);
_innerTextWriter
是 System.IO.TextWriter.SyncTextWriter
的一个实例
该类或其使用方式是否可能存在死锁问题?
一些注意事项:
config.Queues.BatchSize = 1;
将批量大小设置为 1 ,不确定这是否重要我目前正在另一台计算机上设置环境,以便我可以查看它是否可以在 native (表面书)之外的其他地方重现。
更新
问题是我不明白新的 Windows 10 命令提示符是如何工作的。任何时候您单击命令窗口,它都会进入“选择”模式,完全暂停进程的执行。
您可以看出它处于这种状态,因为它会在窗口标题前加上“Select”一词:
您必须按 Enter 或再次单击才能再次运行。
所以,最后两条评论:
1)命令窗口的行为是多么令人难以置信的困惑和不直观!
2)我希望管理员能怜悯我删除这个问题给自己和家人带来的耻辱。
要摆脱这种奇怪的行为,您可以禁用快速编辑模式:
最佳答案
奇怪。当处于这种卡住状态时,您可以尝试向队列中添加新的队列消息并查看是否会触发吗?您确定您的功能没有在内部挂起吗?您使用的是哪个版本的 SDK?您也可以尝试升级到我们上周刚刚发布的 v1.1.0。如果队列中确实有一堆消息等待处理,我想不出有什么会导致这种情况。 SDK 中的队列监听器应该快速运行,并行读取批量消息并将它们分派(dispatch)到您的函数。您是否更改过任何 JobHostConfiguration.Queues 配置旋钮?您还没有强制更新 Azure SDK 的版本吗?是否高于 WebJobs SDK 支持的版本?
如果您无法解决这个问题,另一个选择可能是克隆 SDK,在本地构建并调试它。 repo is here 。主队列处理循环is here .
关于Azure webjob - QueueTrigger 停止触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33863613/
如果我要使用 Azure.Storage.Queue 从队列中获取消息 queue.GetMessage(TimeSpan.FromMinutes(20)); 我可以设置可见性超时,但是当尝试使用 A
我当前正在使用 WebJobs SDK 来使用队列中发出的消息。 我的方法作为带有 [Microsoft.Azure.WebJobs.QueueTrigger(...)] 属性的一个参数,并且可以正常
我正在使用推荐的设置运行 azure webjobs SDK 控制台应用程序(连续): public static void ProcessQueueMessage([QueueTrigger("lo
我有一个带有 QueueTrigger 的 Azure WebJobs: public void ProcessTestQueueByTrigger( [QueueTrigger("test-
我已经准备好了一些 Webjob,每个 Webjob 都会响应多个 QueueTrigger,例如 public static void ProcessMessage([QueueTrigger("X
我希望我的队列每 90 分钟重试一次失败的网络作业,并且仅重试 3 次。 创建队列时我使用以下代码 CloudQueueClient queueClient = storageAcco
我已经准备好了一些 Webjob,每个 Webjob 都会响应多个 QueueTrigger,例如 public static void ProcessMessage([QueueTrigger("X
我希望我的队列每 90 分钟重试一次失败的网络作业,并且仅重试 3 次。 创建队列时我使用以下代码 CloudQueueClient queueClient = storageAcco
我有两种不同的方案来使用 Azure 队列存储处理 2 种不同类型的队列。 我想设置一个队列依次运行,另一个同时运行。 我一直在查看文档,我可以将配置应用到影响整个队列范围的主机。 static vo
我正在开发一个 azure 函数,它将由 azure 存储队列触发。对于 HTTPTrigger,我们可以在本地进行调试,但我无法找到在本地调试 QueueTrigger 的方法。你们中的任何人都可以
public static void ProcessMessage([QueueTrigger("queue")] string message, TextWriter log) { //pr
我使用 1.0.0 WebJobs SDK 持续运行 WebJob。 这是配置代码。 public static void Main() { var config = new JobHostC
我在 Azure 上有一个 Web 作业,带有 QueueTrigger。作业时间长(超过30分钟) public async static Task ProcessQueueMessageAsync
我正在尝试查找有关应从 Azure 存储队列触发的 Azure WebJobs QueueTrigger 方法的错误。 我已经阅读了一些文档(如博客文章/msdn 文章中)。但我还是不太清楚。 主要问
目前我正在使用 asp.net 开发一个 WebApi 项目。我想将所有非时间关键且长时间运行的操作转移到 webjobs 中,以保持我的 API 快速而简单。 例如,当创建特定资源时,它会立即创建(
我创建了一个这样的函数 public static Task HandleStorageQueueMessageAsync( [QueueTrigger("%QueueName%", Conn
我创建了一个这样的函数 public static Task HandleStorageQueueMessageAsync( [QueueTrigger("%QueueName%", Conn
我有一个 Azure Functions QueueTrigger,它在存储队列上监听这样的消息: Message text -------------------------- {"ClientNa
假设以下典型Queue Trigger功能: public void Run([QueueTrigger("queue1")]object data, ILogger log) { // Do
我有一个 azure 函数队列触发器。它在本地工作正常,但在部署时却不行。在 Application Insights 中,我可以看到以下错误消息,并且由于此异常,队列触发器不会被调用。我有一个带有
我是一名优秀的程序员,十分优秀!