问题标签 [azure-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 投票
5 回答
600 浏览

azure - Windows Azure 暂存 <--> 生产导致表存储冲突和错误

昨天在尝试交换我们的登台 <--> 生产角色时,我们遇到了一个可怕的问题/经历。

这是我们的设置:

我们有一个工人角色从队列中提取消息。这些消息在角色上进行处理。(表存储插入、数据库选择等)。每个队列消息可能需要 1-3 秒,具体取决于他需要创建多少表存储帖子。一切完成后,他将删除该消息。

交换时的问题:

当我们的暂存项目上线时,我们的生产工人开始出错。

当角色想要处理队列消息时,它会给出一个恒定的“ EntityAlreadyExists ”错误流。由于这些错误,队列消息没有被删除。这导致队列消息被放回队列中并返回处理等等......

在查看这些队列消息并分析它们会发生什么时,我们看到它们实际上已被处理但没有被删除。

删除这些错误消息时,问题还没有结束。新的队列消息也没有处理,而这些还没有处理,也没有添加表存储记录,这听起来很奇怪。

当删除暂存和生产并再次发布到生产时,一切都开始正常工作。

可能的问题?

我们几乎没有 2 不知道实际发生了什么。

  • 也许两个角色都收到了相同的消息,一个发了帖子,一个出错了?
  • ...???

可能的解决方案)?

我们对如何解决这个“问题”有一些想法。

  • 使毒消息故障转移系统?当出队计数超过 X 时,我们应该删除该队列消息或将其放入单独的“毒队列”中。
  • 捕获 EntityAlreadyExists 错误并删除该队列消息或将其放入单独的队列中。
  • ……????

多个角色

我想在设置多个角色时我们会遇到同样的问题?

非常感谢。

编辑 24/02/2012 - 额外信息

  • 我们实际上使用GetMessage()
  • 队列中的每个项目都是唯一的,并且会在表 Storage 中生成唯一的消息。关于这个过程的更多信息:用户发布了一些东西,并且必须分发给某些其他用户。从该用户生成的消息将具有唯一的 Id (guid)。此消息将被发布到队列中并由工作角色拾取。该消息分布在其他几个表中(partitionkey -> UserId,rowkey -> 一些时间戳记和唯一的消息 ID。因此在正常情况下几乎不可能发布相同的消息。
  • 隐身超时可能是一个合乎逻辑的解释,因为一些消息可以分发到 10-20 个表。这意味着没有批处理选项的 10-20 插入。您可以设置或扩展此隐身超时吗?
  • 由于异常而不删除队列消息也可能是一种解释,因为我们还没有实现任何有害消息故障转移;)。
0 投票
3 回答
819 浏览

java - 如何通过 CloudQueueMessage 传递任意对象?

我有一个CloudQueueMessage并且我想插入“Hello World” - 所以我写:

这是完美的。

我的问题是我想像这样放置一个对象来代替“Hello World”:

但是编译器不会让我,因为它告诉我:

我怎样才能达到我想要的?

0 投票
1 回答
339 浏览

windows-phone-7 - 如何从 Windows Phone 发送队列消息?

我正在使用适用于 Windows Phone 的 Windows Azure 工具包,但我很难将队列消息发送到云服务。这是我的代码:

我总是在 AddMessage 方法中遇到空异常。有什么想法吗?

0 投票
3 回答
3459 浏览

azure - 如何在现实生活场景中使用消息队列?

好的,所以我对消息队列感兴趣。我真的已经对这个主题进行了大量研究。我阅读了“programming windows azure”(关于 Azure 队列),阅读了大量有关 Azure 服务总线的教程和信息,还观看了有关消息传递模式的第 9 频道视频等。

但我只是不明白:在现实生活场景中如何使用它?所有示例都只是将单个字符串或带有一些数据的对象放入队列中,然后从“另一端”的队列中读取它。但是你怎么知道如何处理这些数据?例如:我可以尝试将一个客户、一个订单和一个地址保存到数据库中,所以我将这 3 个对象放在一个队列中以读取另一端并将它们放入我的数据库中。我怎么知道如何处理这些对象?

我有一些问题:

  1. 将什么样的数据放入队列中。可能是一个命令,它在读取时执行,所以队列中的所有内容都具有相同的接口,并且对象本身知道要做什么?
  2. 在哪一层之间使用队列?我正在考虑将内容放入服务层的队列中(在验证之后)并在数据访问层中读取它,以便将其放入数据库中。
  3. 一个人应该排多少队?你想连接的层之间只有一个队列,或者它们之间有多个队列(可能出于不同的目的,虽然我想不出任何)?
  4. 这种松散耦合形式允许我们对请求进行排队,以便稍后处理它们(例如:当我们想重新启动数据库时)。这很酷,但是如果我想读取数据而不是写入数据怎么办?那么数据库应该是在线的。我应该通过队列读取数据,还是我的服务层可以从数据访问层提取数据并将其传递给表示层?

我认为这是我脑海中嗡嗡作响的大部分问题。我希望任何人都可以为我解决这个问题。

0 投票
2 回答
209 浏览

azure - 将消息重新发送回 Azure 队列是否有任何问题

我在 Azure 中有一个调度程序和一些工作人员。调度程序将消息放入队列中,工作人员提取这些消息并对其进行处理。我现在刚刚遇到一个场景,一旦达到某个阈值,我需要将一些数据从表存储移动到我们的数据库。这些项目需要按顺序处理,最早的在前。一旦达到该阈值,所有其他项目都会按顺序处理。触发传输的当前消息需要填充在行尾并重新处理。

所以,对于我的问题的实质......

可以简单地将消息按原样重新发送到队列,还是有可能导致问题?

一位同事提到他“虽然他可能已经读过一些关于需要做一些特别的事情的文章。 ”但我还没有看到任何可以证实他的怀疑的东西,所以我想我会在这里提出这个问题,只是为了安全起见。

0 投票
3 回答
2023 浏览

azure - 是否可以从 azure 存储队列中获取消息两次?

我知道,如果工作人员无法处理队列中的消息,它将再次变得可见,并且您必须对此进行编码(幂等)。但是工人是否有可能两次出列消息?根据我的日志记录,我似乎看到了这种行为,但我不确定为什么。我什至在去获取下一条消息之间删除了消息,似乎我又得到了它。

0 投票
1 回答
753 浏览

windows-services - 是否能够在 Windows 服务中发送服务总线消息

是否能够在 Windows 服务中发送 Azure 服务总线消息?

最近,我构建了一个 Windows NT 服务来向 Azure 队列发送消息。但它失败了。我创建了两个测试控制台应用程序,一个使用与我的 Windows NT 服务相同的代码来发送服务总线消息,另一个用于接收消息。测试控制台应用程序成功发送和接收消息。在我的 Windows NT 服务中,它不会抛出任何消息或错误。

我想知道的是 Windows NT 服务是否支持 Azure 服务总线消息。

我的应用程序既不是工作角色也不是 Web 角色。它只是一个 Windows NT 服务。

0 投票
2 回答
187 浏览

azure - 在 Azure 中将类型化对象添加到 MessageQueue

我想在将它添加到 QueueStorage 之前将一个类添加到 MessageQueue 的 MessageContent。

例子

我怎样才能做到这一点 ?

谢谢,

0 投票
1 回答
2464 浏览

azure - 使用 Windows Azure 队列锁定队列中的消息

我正在使用 Windows Azure 消息队列。我想知道当我收到消息时是否有一种方法可以锁定队列中的消息?

0 投票
3 回答
5906 浏览

azure - 从队列接收多条消息而没有循环

我正在使用 Azure 服务总线来管理带有 webrole 和 workerrole 的消息。

我需要知道如何在不使用循环的情况下一次从队列中获取多条消息。