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

azure - 在 .NET 服务总线队列与 Azure 队列服务之间进行选择

只是一个关于 Azure 应用程序的快速问题。如果我有许多需要通信的 Web 和 Worker 角色,文档说要使用 Azure 队列服务。

但是,我刚刚读到新的 .NET 服务总线现在也提供队列。这些看起来更强大,因为它们似乎提供了更详细的 API。虽然 .NSB 看起来更有趣,但它有几个问题让我对在分布式应用程序中使用它持谨慎态度。(例如,队列过期......如果我不能保证队列会按时更新,我可能会失去它!)。

有没有人有任何使用这两种技术的经验,并且可以就何时选择其中一种技术提供任何建议。

我怀疑虽然服务总线看起来更强大,因为我的用例实际上只是使 Web/Worker 角色能够相互通信,但我所追求的是 Azure 队列服务。但在将自己编程到角落之前,我真的只是在寻找确认:-)

提前致谢。

更新

在休息期间阅读了有关这两个系统的信息。defo 看起来 .NET 服务总线更专为集成系统而设计,而不是提供通用的可靠消息传递系统。Azure 队列是分布式的,并且如此可靠和可扩展,而 .NSB 队列则不是,因此更适合托管在 Azure 本身内的代码。

感谢您的回复。

0 投票
8 回答
32729 浏览

.net - Clearing azure service bus queue in one go

We are using a service bus queue in our project. We are in need of a functionality to remove all the messages from the queue when the administrator chooses to clear the queue. I searched on the net but could not find any function which does this inside the QueueClient class.

Do I have to pop all the messages one by one and then marking them complete to clear the queue or is there a better way?

0 投票
4 回答
721 浏览

azure - 无法在服务总线队列上获取消息

我有一个小型 Java Web 应用程序,当用户单击按钮时,我在服务总线队列上发送消息。我想在我的 jsp 页面上显示消息。但是当我打电话时

resultQM = service.receiveQueueMessage(queueName, opts);

我得到以下异常。在此先感谢您的帮助。

0 投票
3 回答
2984 浏览

azure - 如何从现实世界中的多个队列中读取?

这是一个理论问题:

当我使用消息队列构建应用程序时,我将需要多个队列支持不同的数据类型以用于不同的目的。假设我有 20 个队列(例如,一个用于创建新用户,一个用于处理新订单,一个用于编辑用户设置等)。

我将使用“最少”1 个 Web 角色和 1 个辅助角色将其部署到 Windows Azure。

如何以正确的方式从所有这 20 个队列中读取数据?这就是我的想法,但我对此几乎没有实际经验:

创建一个在工作角色“主”类中产生 20 个线程的类。让这些线程中的每一个执行一个方法来轮询不同的队列,并让所有这些线程在每次轮询之间休眠(当然还有增加休眠时间的退避机制)。

这导致有 20 个线程(或 21 个?)和 20 个正在被主动轮询的队列,从而导致大量浪费的消息(每次轮询一个空队列时,它都被计费为一条消息)。

你怎么解决这个问题?

0 投票
2 回答
1031 浏览

c# - 如何将 Observable 序列化到云端并返回

我需要在 Azure 环境中将处理序列(如如何使用 .net RX 组织数据处理器序列)拆分为多个计算单元。
这个想法是将 Observable 序列序列化到 Azure 队列(或服务总线)并将其反序列化。
如果生产者或消费者失败,另一方应该能够继续生产/消费。

任何人都可以提出一种优雅的方法以及使用什么(Azure Queues 或 Service Bus)吗?
有没有人使用过 TCP Observable 提供程序 - http://rxx.codeplex.com/wikipage?title=TCP%20Qbservable%20Provider来解决此类问题对于其中一方的失败是否安全?

0 投票
2 回答
584 浏览

azure - Azure Worker Role 性能不一致 - 问题

我有带有 ExtraSmall 实例的 Azure Worker Role 和 Web Role。

我正在传递 Service Bus BrokeredMessage 以从 Azure Web 角色更新实体。

我刚刚测试了更新实体,前三次在数据库中反映需要 5 秒。之后,每次更新都需要 30 多秒。不知道为什么 Azure Worker Role 的性能不一致?如果有人知道请分享您的想法。

我正在同步发送和接收消息。

注意:工人角色,我为每次更新连接数据库

代码示例 WorkerRole 类

0 投票
2 回答
1821 浏览

java - Windows Azure:删除代理消息时出错

我正在开发一个从 Azure 服务总线队列中提取消息的 Java 应用程序。我正在使用 Java Azure API (com.microsoft.windowsazure.services)。我遇到的问题是代理消息在处理后删除有时会失败。

我的应用程序使用 ServiceBusContract 对象上的 receiveQueueMessage() 方法,使用 peek-lock 接收模式从队列中提取消息。成功处理消息后,我通过调用 deleteMessage() 方法从队列中删除消息(我相信此方法对应于 .NET API 中的 Complete() 方法)。

但是,有时此方法调用会失败。deleteMessage() 将 com.sun.jersey.api.client.UniformInterfaceException 异常记录到控制台,它不会抛出此异常(我将在下面生成输出)。该异常似乎表明找不到该消息。发生这种情况时,消息将保留在队列中。实际上,下一次调用 receiveQueueMessage() 会再次检索此消息。然后删除失败一次或两次,然后成功。此后检索到的消息成功删除。

下面是出现问题的代码:

以下是出现问题时的输出示例:

请注意,异常中的 URI 似乎引用了不同的消息 ID(efa56a1c-95e8-4cd6-931a-972eac21563a,而消息的 ID 实际上是 100790000086491)。我不知道这是否是失败的关键,但我有一种预感。

另一个有趣的观察:看起来错误总是发生在应用程序启动后从队列中检索到的第一条消息中,或者在队列为空之后。此后收到的所有消息似乎都不会导致此类问题。

该队列的锁定持续时间为 2 分钟,并且消息的处理在该持续时间内完成,因此过期的锁定不是原因。

有任何想法吗?

0 投票
1 回答
1834 浏览

filtering - 使用 Windows Azure 过滤队列中的消息

有什么方法可以根据属性过滤消息吗?我的意思是,只有某些属性才能让 Worker 角色使用它?

0 投票
3 回答
3002 浏览

c# - QueueClient.Receive() 的异步方法?

我正在使用服务总线连接 Web 角色和辅助角色。我的工作角色处于连续循环中,我正在使用 QueueClient.Receive() 方法接收 Web 角色发送的消息。

但是使用这种方法,如果服务总线队列上没有消息,它会等待几秒钟来接收消息,而不是移动到下一行继续执行。我希望有一些异步方法来接收消息?或者至少以某种方式设置这个等待时间?

我从 QueueClient 的 msdn 文档中找到了这个 BeginReceive 方法 我希望这将是我问题的答案,但我不知道如何使用这个方法。方法参数是异步回调和对象状态,我不知道它们是什么。

有任何想法吗?

更新: 感谢 Sandrino 的出色解决方案,它可以异步工作。但是异步现在给我带来了一些问题。我的 VS 崩溃了。不确定是什么问题。下面是正在使用的代码。

工人角色:

我是否错过了使 VS 过度工作和崩溃的任何事情?因为在转移到 BeginReceive 之前,当我使用 QueueClient.Receive 时它工作正常并且没有崩溃。

谢谢

0 投票
2 回答
5386 浏览

c# - 未收到 Azure 服务总线消息

我正在从网络角色向工作角色发送消息。早些时候,这些消息被正确和立即接收,但现在不知从何处没有收到一些消息,即使所有消息的内容都是相同的。就像我现在发送一条消息一样,它没有收到,但在我发送另一条消息之后立即收到最新的一条。之前没有收到的消息,在几秒钟后突然收到,或者有时会随着生存时间到期而变成死信消息。

我无法弄清楚问题可能是什么,有什么想法吗?或者这种行为在服务总线上是正常的吗?

这就是我在工作角色中接收消息的方式

编辑:

更新 :

网络角色: