问题标签 [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.

0 投票
1 回答
536 浏览

c# - 如何在不影响性能的情况下正确使用火而忘记?

我已经问过这个问题,但没有得到太多回应,而且我得到的那些也没有解决我的问题。所以在这里我试图以不同的方式再次询问。

我有一个项目将产品提要文件处理到我的系统中。对于一个特定的提要文件,整个过程大约需要 40-50 分钟。现在我已经创建了一个WebJob来处理来自提要的图像,并且我正在WebJob通过创建存储客户端将图片 url 从我的第一个项目发送到。当我在我的项目中使用它时,它显着增加了处理时间,所以我尝试将它与Task.Run使用Fire and Forget方法一起使用,但即使现在整个处理时间仍然约为 2 小时。

这是我如何调用创建存储队列的方法。

这是我创建队列消息的代码

我不明白为什么我的处理时间加倍,也找不到解决方法。任何能帮助我解决这个问题的想法都会非常有帮助。

编辑:将QueueUtility静态类和方法转换为静态方法似乎有所帮助。不知道如何或为什么。

0 投票
0 回答
1177 浏览

azure - Azure 存储性能队列与表

我已经设置了一个不错的日志记录系统,它可以写入 Azure 表存储,并且它运行良好很长时间。但是,在我的代码中的某些地方,我现在需要将大量消息写入日志(50-60 条消息),而不仅仅是几条。同样重要的是,在我知道日志成功之前,我无法启动一个新线程来完成对日志的写入并返回 MVC 操作,因为理论上该线程可能会死掉。在将数据返回给网络用户之前,我必须写入日志。

根据 Azure 仪表板,表存储事务提交端到端 (E2E) 大约需要 37 毫秒,而队列只需要大约 6 毫秒 E2E 提交。

在此处输入图像描述

我现在正在考虑不直接登录到表存储,而是登录到 Azure 队列,然后运行批处理作业,读取队列,然后将它们放在表存储中的适当位置。这样我仍然可以通过它们的分区和行键正确索引它们。我也可以只写一条包含所有日志条目的队列消息。所以它应该只需要 6 毫秒而不是 (37 * 50) 毫秒。

我知道有表存储批处理操作。但是,每个日志条目通常会转到不同的分区,并且批处理操作需要保留在单个分区中。

我知道队列消息只存在 7 天,所以如果队列消息超过一天,我会确保将它们存储在新机制中(如果前 50 次都不起作用,那就不是去上班)。

那么我的问题是:我没有在想什么?这怎么能让我在 4 个月后彻底崩溃?

0 投票
1 回答
1806 浏览

c# - 为什么我的 Azure 存储帐户上的队列域丢失?

我已使用以下设置在 Azure 上成功创建了一个存储帐户:

  • 部署:资源管理器
  • 类型:通用(标准)
  • 复制:ZRS

在 Azure 门户上,我可以看到“Blobs”服务,如果单击它,我可以在 blob 域下创建 blob 容器:https://[account_name].blob.core.windows.net/

到目前为止,一切都很好。

当我尝试在 C# 应用程序中使用 Azure SDK 创建队列时,我收到错误消息,即找不到 [account_name] 的域。排队.core.windows.net 。

我一直在按照 Microsoft 教程创建存储帐户并让一个简单的队列正常工作,但我看不到创建这个“队列”域的任何其他步骤。在 Azure 门户本身上,我找不到任何其他选项来创建队列或队列服务。

我用作参考的代码:

创建 blob 容器的调用成功,我可以在 Azure 门户中看到新容器。创建队列的调用失败,出现以下异常:

0 投票
2 回答
134 浏览

node.js - sdk 中的 Azure 队列 getMessages 方法未按预期工作

我在 Azure Queue 中创建了一个队列,并将其中的两个项目排入队列。使用 nodejs sdk,我创建了一个每 5 秒执行一次的计时器并调用:

我希望队列中的两个相同的消息每 5 秒出现一次,但似乎并非如此。此调用的输出在两条消息之间交替。

这不应该是这种情况,因为 visibilityTimeout 设置为 1,因此在 1 秒后,在第一次调用中出列的消息应该在下一次 getMessage 调用之前再次可见。

0 投票
1 回答
188 浏览

azure - 在 C# 中检索 Azure 队列消息长度

我注意到 CloudQueue.ApproximateMessageCount 会返回消息的数量,包括过期的消息。这可能是一个错误。有什么方法可以查看队列中有多少条消息?

0 投票
2 回答
69 浏览

nservicebus - 是否可以在 NServiceBus 中对事件发布者进行范围/分组?

我有:
- 一个带有 QUEUE0 的订阅者 SUB - 带有 QUEUE1 的
发布者 PUB1 - 带有 QUEUE2的
发布者 PUB2 -两个发布者都发布了
事件MyEvent

何时:
- SUB 仅使用队列名称 QUEUE1 显式订阅 PUB1

结果:
- SUB 也接收MyEvent来自 PUB2(队列名称为 QUEUE2)

预期:
- SUB 不应该MyEvent从 PUB2 接收,因为它没有订阅该发布者队列名称

来自 NSB 维基:

订阅者表示对一个或多个类感兴趣,并且只接收感兴趣的消息,而不知道有哪些发布者(如果有的话)

问题

  1. 在上面显示的方法中指定发布者端点有什么意义AddPublisher?Azure 表存储中的订阅表只有一个事件类型和一个订阅者列,不存储发布者端点。

  2. 如果AddPublisher是某种过时的方法,那么endpointInstance.Subscribe<MyEvent>()简单地失败 - 它说“找不到发布者”。

  3. 是否可以对发布者进行范围/分组,以便只有一种事件类型MyEvent,订阅者将接收来自仅使用相同队列名称创建的发布者的事件?
    例如,您使用 QUEUE-A 创建 PUB1,使用队列 QUEUE-A 创建 PUB2,使用 QUEUE-B 创建 PUB3,使用 QUEUE-A 创建 SUB AddPublisher,因此 SUB 不会MyEvent从 PUB3 (QUEUE-B) 接收。

我正在使用:
NServiceBus 6.0.0-beta0004
NServiceBus.Persistence.AzureStorage 1.0.0-beta0004
NServiceBus.Azure.Transports.WindowsAzureStorageQueues 7.0.0-beta0004

0 投票
2 回答
336 浏览

azure - Azure 云服务(经典)不使用新的存储帐户自动缩放

我在新门户中将 WorkerRole 部署到 Azure 云服务(经典)。有了这个,我还为队列创建了 Azure 存储帐户。

尝试添加 AutoScale 规则,存储帐户未列出。尝试选择Other Resource和放置Resource Identifier存储,没有列出指标名称。

经典云服务和新存储帐户不能一起工作是设计使然吗?

0 投票
3 回答
3980 浏览

azure - 如何检查 Azure 存储队列是否有消息

我正在尝试同时使用一个 WebJob 和一个 Worker Role。

WebJob 将有一个 BlobTrigger,每次将 blob 添加到容器时,都会将一条新消息添加到 Azure 存储队列(称为挂起 blob)。

此外,还有一个 Worker Role,它将从待处理的 Blob队列中汇集消息,并将 Blob 名称添加到一个内部阻塞集合中,该集合将由 Worker Role 触发的多个任务同时处理。

我在这个解决方案中考虑过可扩展性,因为会有很多 blob 到达容器,所以我不希望 CPU 消耗达到峰值。

在开发解决方案时,我想到了一些问题:

  • 有没有办法检查 Azure 存储队列里面是否有消息?
  • 如果我调用 GetMessage 方法并且队列没有任何消息,则执行将被阻止,直到有新消息到达?
  • 有没有办法手动删除 blob 收据?
0 投票
1 回答
833 浏览

azure-service-fabric - Azure Service Fabric - 当消息到达 Azure 存储队列时触发服务/参与者

我有一个包含要执行的任务列表的天蓝色存储队列(请求队列)。我的 Service Fabric 应用程序包含一个公共 Web api,可将任务排入此队列。会有一个无状态的服务,会一个一个的处理这些任务,然后把结果放到另一个天蓝色的存储响应队列(NOT IReliableQueue)中。

位于应用服务器中的 Windows 服务侦听此响应队列并进行一些处理并将最终响应放入第三个 azure 存储队列中,然后由单独的 azure 无状态服务排出。

当消息到达天蓝色存储队列时,我正在努力寻找一种触发天蓝色服务的方法。我知道传统上,azure queues 可以触发 webjobs,但是在 SF 世界中如何实现呢?

0 投票
1 回答
999 浏览

azure - Azure WebJob 存储异常

运行连续网络作业时出现以下错误。

Microsoft.Azure.WebJobs.Host.dll 中出现“Microsoft.WindowsAzure.Storage.StorageException”类型的未处理异常

附加信息。客户端无法在指定的超时时间内完成操作。

我的网络作业由 Azure 存储队列触发。当消息到达队列时,webjob 可以正常启动并运行大约 8-10 分钟,然后才停止运行。此时,它再次开始处理该消息,并且 webjob 再次运行 8-10 分钟。这个循环一直持续到我手动停止 webjob。

我设法通过远程调试 webjob 得到上述错误。8-10 分钟后,我在 Visual Studio 中收到一个弹出窗口 - StorageException 未处理。

Webjob 和 Azure 队列/Blob 存储之间是否存在默认超时?

真的坚持这个,所以任何帮助表示赞赏。