问题标签 [azure-storage-queues]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 将 MassTransit 与 Microsoft 存储模拟器一起使用
我一直在尝试使用带有 Microsoft Storage Emulator 的 MassTransit 来启动和运行工作配置。但无论我尝试什么,都无法让它发挥作用。
我在此设置中获得的唯一详细信息是这里http://docs.masstransit-project.com/en/latest/configuration/transports/azure.html
设置
- 我的模拟器正在运行
- 我有一个队列设置
- 我创建了访问策略
- 创建了一个 SAS
当我创建一个 SAS 时,我得到一个如下所示的网址http://127.0.0.1:10001/devstoreaccount1/validation?sv=2015-12-11&si=validation-1574305821E&sig=dM8amgmEXM8ykQwLpnrBI2AJmBS3agOvtR%2FskAJJqec%3D
但我不能使用它,因为 Masstransit 抱怨协议需要是“sb://”而不是“http://”
我现在的代码是
我已经尝试过使用令牌
- 账户名:devstoreaccount1
- 帐户密钥:Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVERCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==
在此https://github.com/Azure/azure-content/blob/master/includes/storage-emulator-connection-string-include.md中提到
它出错的代码行是 busControl.Start();
我究竟做错了什么?
rest - 尝试调用 REST API 清除队列消息时,Azure 存储服务抛出 403 禁止错误
我正在尝试通过队列服务 REST API 清除所有天蓝色存储队列消息。我已经验证代码是正确的,但它仍然返回 403 禁止错误。“StorageSharedKey”和“StorageAccountName”是正确的,因为我能够使用 azure 队列客户端的连接字符串中的这些值连接到 azure 队列。我使用的存储版本是“2015-12-11”。
这是代码:
azure - Azure Webjob 如何将结果返回给 webapp?
我了解 Webjob 是一项后端作业,Webapp 可以通过 Azure 队列调用它。我的问题是如果 Webjob 完成,Webapp 如何知道 Webjob 已完成,Webapp 如何检索 Webjob 生成的结果?
有没有可以在这种情况下工作的异步方法?也欢迎其他方法。
谢谢
德里克
- - - - - - - - 更新 - - - - - - - - - - - -
“ListQueuesSegmentedAsync”方法可以工作吗?但我不知道如何使用它。
azure - Azure函数和存储队列,如果函数失败怎么办
我正在制定一个将消息发布到 Azure 存储队列的方案。出于测试目的,我开发了一个控制台应用程序,我可以在其中获取消息,并且可以使用尝试计数对其进行更新,并且当逻辑完成后,我会删除该消息。
现在我正在尝试将我的代码移植到 Azure 函数。似乎非常不同的一件事是,当调用 Azure 函数时,消息会从队列中删除。
我发现很难找到关于这个特定主题的任何文档,而且我觉得我在结合这两者的概念方面遗漏了一些东西。
我的问题:
- 我是对的,当您在新队列项上触发函数时,即使函数失败,该函数也会获取消息并将其从队列中删除?
- 如果 1 是正确的,您如何确保重试消息并将其发布到死队列以供以后处理?
azure-blob-storage - 由于 Azure 存储超时,长时间运行的 webjob 失败
问题在于每日计划中长时间运行的 azure webjob。每次运行需要 2-4 小时进行数据分析。唯一的依赖关系是通过 EF 和 Azure 存储使用 Azure SQL 数据库,只需在 App.Config 上设置 AzureWebJobsDashboard 和 AzureWebJobsStorage 连接,在 VS 上使用 webjob SDK 进行标准设置。webjob 的大部分时间都被 EF 的 SaveChanges() 所消耗。我还使用大约 3000 行控制台输出进行大量日志记录以监控进度。Web 应用程序配置为 Allways ON,并且 WEBJOBS_IDLE_TIMEOUT 设置为非常高的数字。
以下是错误日志:
[10/20/2016 07:48:17 > 492c46: ERR] 未处理的异常:Microsoft.WindowsAzure.Storage.StorageException:客户端无法在指定的超时时间内完成操作。---> System.TimeoutException:客户端无法在指定的超时时间内完成操作。
[10/20/2016 07:48:17 > 492c46: ERR ] --- 内部异常堆栈跟踪结束 ---
[10/20/2016 07:48:17 > 492c46: ERR] 在 Microsoft.WindowsAzure.Storage.Core.Util.StorageAsyncResult`1.End()
[10/20/2016 07:48:17 > 492c46: ERR ] 在 Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob.EndUploadText(IAsyncResult asyncResult)
[10/20/2016 07:48:17 > 492c46: ERR ] 在 Microsoft.WindowsAzure.Storage.Core.Util.AsyncExtensions.<>c__DisplayClass4.b__3(IAsyncResult ar)
c# - Azure 队列触发器错误地给出空队列项
我正在尝试在 Azure 中编写一个系统,对于其中的一部分,我希望能够将一些代码写入队列,并让一个处理代码处理队列中的每个项目.
项目正在正确添加到队列中。我已经检查过了;我有带有 Azure 插件的 Visual Studio。然后,我可以使用 Cloud Explorer 调出存储帐户并查看队列。在这里,队列内容似乎是正确的,因为消息文本预览看起来与我预期的一样。
但是,当我添加一个带有队列触发器的 Azure Functions 来处理它时,当触发器触发时,队列项是空的。我已经尝试了教程代码,减少了一点。当我将运行功能设置为:
然后我得到队列项目为空的输出,当我知道它不是时。队列触发器元素也是空的。下面是一些示例输出,当我直接在 Azure Functions 中运行该函数时:
这完全触发并且具有合理的插入时间这一事实表明我正在连接到正确的队列。
当队列窥视工具可以看到完整的预览字符串时,有谁知道为什么字符串 myQueueItem 为空?
azure - Azure 存储帐户指标仅对经典存储帐户可见
我已经测试了在新 Azure 门户中创建经典存储帐户 ( manage.windowsazure.com ) 和“新”存储帐户。对它们进行类似的设置并运行相同的代码来创建和配置队列。但指标仅显示门户中的经典存储帐户(能够在新门户中查看两个帐户)
我已经像这样设置了 ServiceProperties,并且可以在获取服务属性或在 Azure 门户中查看时成功看到保存的这些更改。
当我使用 Microsoft Azure 存储资源管理器时,两个帐户都设置了指标表和日志记录,因此两者看起来都像这样,并且表包含数据。所以从这里看起来很相似。但指标图表和选项仅适用于 Azure 门户中的经典存储帐户。对于“新”存储帐户,它只显示“无可用数据”。
这是一个错误吗?还是经典存储帐户默认配置了一些我需要手动应用到新存储帐户以使其行为相似的属性?
node.js - 将数千条消息添加到 Azure 存储队列
我正在尝试使用Node.js在Azure 函数中向我的Azure 存储队列添加大约 6000 条消息。
我尝试了多种方法来做到这一点,现在我将
QueueService 方法包装在 a 中,并使用Bluebird以大约 50 的并发性Promise
通过 a 解决 6000 个承诺。Promise.map
我的 QueueService 是使用ExponentialRetry
策略创建的。
使用这种策略我得到了好坏参半的结果:
- 所有消息都被添加到我的队列中,并且承诺正确解决。
- 所有消息都被添加到我的队列中,并且承诺没有解决(或拒绝)。
- 并非所有消息都添加到我的队列中,并且承诺不会解决(或拒绝)。
我是否遗漏了什么,或者我的电话有时需要 2 分钟才能解决,有时需要 10 分钟以上?
将来,我可能要添加大约 100.000 条消息,所以我有点担心我现在得到的不可预测的结果。
在节点(在 Azure 函数中)添加大量消息的最佳策略是什么?
编辑:
不知道我是怎么错过的,但是将消息添加到我的存储队列的一种非常可靠的方法是使用我的 Azure 函数的队列输出绑定:
也使我的代码更容易!
编辑2:
我打算将我的消息分成大约 1000 条,并将这些批次存储在Azure Blob Storage中。
每次添加新 blob 时都可以触发另一个 Azure 函数,该函数将一次处理 1000 条消息的排队。
这应该使我的队列更加可靠和可扩展,因为我尝试通过输出绑定将 20.000 条消息添加到我的队列中,并在 5 分钟后收到 Azure 函数超时,而只能处理大约 15.000 条消息。
azure - 事件延迟N天的解决方案
我们目前正在 Microsoft Azure 中编写应用程序,并计划使用事件中心来处理实时事件。
但是,在初始处理之后,我们将不得不将事件的进一步处理延迟 N 天。该过程将像这样工作:
事件触发 -> 将事件放入事件中心 -> 事件从事件中心获取并处理 -> 事件应延迟 X 天 -> 事件得到进一步处理(最后两个步骤可能是一个循环)
我们如何在不使用轮询或类似策略的情况下实现进一步事件处理的延迟。一种想法是使用 Azure 队列及其可见性超时,但根据文档,7 天是支持的最大值,我们的业务需求在 1-3 个月的最大值范围内。我们系统中的事件数量应为每天最多 10k。
任何想法将不胜感激,谢谢!