问题标签 [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.
unit-testing - 为什么单元测试时Azure存储队列访问这么慢?
我在尝试将单元测试与实时 Azure 存储队列一起使用时遇到了一些困难,因此我一直在编写越来越简单的示例来尝试隔离问题。简而言之,这似乎是正在发生的事情:
队列访问显然(并且适当地)延迟加载。不过,在我的 MVC 应用程序中,当我真的需要访问队列时(在我的情况下,当我调用 CloudQueue.Exists 方法时)它非常快。不到十分之一秒。但是,非常相同的代码在单元测试的上下文中运行时大约需要 25 秒。
我不明白为什么会有这种差异,所以我制作了一个简单的控制台应用程序,它可以写入一些内容,然后从 Azure 队列中读取它。控制台应用程序在第一次运行时也需要 25 秒——在随后的运行中大约需要 2.5 秒。
现在是真正奇怪的行为。我创建了一个包含三个项目的 Visual Studio 2012 解决方案——一个 MVC 应用程序、一个控制台应用程序和一个单元测试项目。这三个都调用相同的静态方法,该方法检查队列是否存在,如果不存在则创建它,向其中写入一些数据并从中读取一些数据。我在该方法中对 CloudQueue.Exists 的调用设置了一个计时器。这是交易。当从 MVC 应用程序调用该方法时,无论队列是否确实存在,CloudQueue.Exists 方法都会在大约十分之一秒内始终完成。从控制台应用程序调用该方法时,第一次调用需要 25 秒,后续调用大约需要 2.5 秒。当从单元测试中调用该方法时,它始终需要 25 秒。
更多信息:碰巧当我创建这个虚拟解决方案时,我碰巧将我的静态方法(QueueTest)放在控制台应用程序中。奇怪的是——如果我将 Visual Studio 中的默认启动项目设置为控制台应用程序,那么单元测试突然需要 2.5 秒。但是如果我将 Visual Studio 中的启动项目设置为 MVC 应用程序(或单元测试项目),那么单元测试需要 25 秒!
所以....有没有人知道这里发生了什么?我很困惑。
代码如下:
控制台应用程序:
MVC 应用程序(家庭控制器):
单元测试方法:(注意,目前预计会失败!)
当然,非常感谢洞察力。
azure - 检查队列是否存在
我有一个关于 Windows Azure 存储队列错误/访问的非常基本的问题。
我试图找出给定的存储帐户是否已经包含给定名称的队列 - 比如说“queue1”。如果队列不存在,我不想创建它,因此我不热衷于使用该CreateIfNotExist
方法。我赋予 SAS 令牌的权限是 - 处理和添加(因为我要做的就是仅在队列已经存在时向队列添加新消息,否则抛出错误)
问题是,当我尝试获取对假命名队列的引用并向其中添加消息时,我得到一个 403。当 SAS 令牌没有权限时也可能发生 403,所以我不能确定是什么导致了错误。
有没有办法可以明确知道队列是否存在?
我已经尝试过BeginExist
, 和EndExist
方法,但即使我可以看到队列在那里,它们也总是返回 false 。
有什么建议么?
azure - NServiceBus 传奇未在 azure 上处理消息
我在 azure 云服务上部署 NServiceBus sagas 时遇到了奇怪的行为。他们永远不会收到回复消息,永远不会醒来......虽然如果它在本地部署一切正常,当它在 WebApi 云服务角色上时,sagas 也能正常工作......
这是我的nsb配置
这就是我用于持久化者的配置
NServiceBus.Hosting.Azure、NServiceBus.NHibernate、NServiceBus.Core、NServiceBus.Azure、NServiceBus 所有 v4.0.30319
我正在使用 AzureStorageQueue,而且我确定我已经用正确的 ConfigureMapping 覆盖了 ConfigureHowToFindSaga,并且我正在回复消息,所有文件都正确指定...
我将非常感谢任何想法,谢谢。
node.js - 在 Node.js 中为 Azure 队列消息设置 TimeToLive
如何为放入 Azure 队列的消息设置 TTL,以使它们使用 Node.js 的持续时间不会超过 30 秒?
我似乎在 Github 上的 SDK for Node.js 中找不到任何提及 Time To Live 的内容。
performance - 如何加速 Azure 存储队列
我已经尝试了我能想到的一切来提高插入速度。这实际上只是几件事没有改善。
我有大量的标识符(Int64),我需要将它们发送到队列,以便我的多个工作角色可以处理它而不必担心并发性。
我尝试了一个foreach
循环(使用.ToString()
和BitConverter.GetBytes()
):
和一个并行.ForAll<T>()
:
来自同一数据中心内的本地和 WorkerRole 的插入最多每秒 5 次,平均每秒 4.73 次。
难道我做错了什么?
azure - 用于 Azure 存储帐户监视器配置的任何 API?
是否有任何 API 或 powershell cmdlet 可用于配置 Azure stroage 帐户以进行监控?我的意思是监控 blob、队列和表。
azure-storage - Azure 存储队列消息(在特定时间显示)
如何将一条消息添加到明天(24 小时后)将在队列中显示的 Azure 队列存储?
azure-storage - 天蓝色存储队列(json vs 二进制)
将自定义消息存储到队列中的最佳方式是什么?我的意思是,如果我有一个可以存储不同类型消息的队列,我应该将它们存储为二进制格式还是 json?
你怎么看?
c# - 其他角色完成后以 WCF Web 角色响应
我有一个带有公共 REST 和 SOAP 端点的 WCF 服务,它有一个发布方法。目前应用流程如下
- 对象发布到服务方法
- 服务方法将数据传递到存储队列,然后发送 XML 响应。
- 第二个工作角色检查队列,进行一些处理并根据处理,将记录添加到数据库或拒绝它。
我目前的问题是 WCF 方法在决定接受或拒绝消息之前做出响应。处理很多,根据客户设置,在收到WCF消息后使用各种worker角色。我希望能够做出接受/拒绝决定,然后用相关数据做出回应。我想知道如何做到这一点。
我可以做一个异步服务方法,但是所有代码都需要进入 WCF 角色或可调用库,这并不理想。有没有办法在另一个工作角色(消息在队列中)做出响应之前不使用异步 End 方法?我意识到我可以做一个 thread.sleep 并定期检查队列,但是我必须将原始请求数据添加到队列中,我真的不认为这是做事的正确方法。我用谷歌搜索了这个,找不到一个具体的、非骇客的方法。
让我知道代码示例是否会有所帮助,但是(我认为)它非常简单。
azure - 将 visibilitytimeout 设置为 7 天意味着自动删除 azure 队列?
似乎新的 azure SDK 将可见性超时延长到 <= 7 天。我知道默认情况下,当我将消息添加到 azure 队列时,实时时间是 7 天。当我收到消息时,将可见性超时设置为 7 天。这是否意味着如果我不关心消息的可靠性,我不需要删除此消息?该消息将在 7 天后消失。
我想采用这种方式,因为 DeleteMessage 很慢。如果我不删除消息,它对GetMessage的性能没有任何影响吗?