问题标签 [azure-servicebus-topics]

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 回答
1209 浏览

azure - Azure 服务总线主题订阅并发

我有以下要求

发布到主题/队列的消息

多个消费者订阅了主题/队列。所以我们的要求是只有一个消费者应该收听消息。这意味着没有其他消费者可以获得相同的消息。

我觉得排队是最合适的。但是我建议我们的架构师检查我们是否可以从主题中实现它?

所以任何机构请让我知道我们是否可以通过主题以及优点和约束来实现它?

谢谢。

0 投票
6 回答
3071 浏览

azure - 使用 Azure ARM 模板通过 Sql 筛选器创建服务总线主题订阅?

我已经能够弄清楚如何设置 Azure ARM 模板来创建/管理 Azure 服务总线命名空间、主题和订阅以接收所有消息。但是,Microsoft 文档在 ARM Tempates 上仍然非常缺乏,我无法弄清楚如何在您可以使用 .NET SDK 管理的模板中为订阅定义 SqlFilter。

有谁知道如何将 Sql 过滤器添加到 ARM 模板中的服务总线主题订阅?

这是我用于创建没有 Sql 过滤器的服务总线主题和订阅的 ARM 模板的链接:

https://github.com/crpietschmann/azure-quickstart-templates/blob/101-servicebus-topic-subscription/101-servicebus-topic-subscription/azuredeploy.json

另外,这里是我所指的 ARM 模板的来源:

0 投票
1 回答
566 浏览

azure - LockToken 在 azure 服务总线中的 LockUntilUtc 时间之前过期

我正在使用 Windows azure 服务总线进行消息传递。我们创建了 web api 来从服务总线中提取消息。移动应用程序正在使用此 Web api 来获取消息。我们在订阅客户端使用 PeekLock 模式,锁定时间为 5 分钟。

在客户端,如果消息处理时间超过 5 分钟,则消息将解锁。所以在解锁之前我们要更新锁。所以我们创建了另一个 web api 来更新锁。在 web api 中,我们传递 LockToken。但是当我们使用 subscriptionClient.RenewMessageLockAsync(new Guid(lockToken)) 时,它会在锁定过期时间之前抛出错误“提供的锁定无效。锁定已过期,或者消息已从队列中删除”。我们在消息 LockUntilUtc 时间的 1.5 分钟之前启动更新锁。

我的问题是我们可以在到期前更新消息锁吗?如果是,那么为什么 azure service bus throwing lock expired 错误?请帮我理解这个更新锁的事情。

0 投票
1 回答
95 浏览

nservicebus - Nservicebus - 暂时挂起端点

我正在使用 Nservicebus 4.7.5 和 azure service bus 作为传输。我的端点只是事件的订阅者,它不发布任何内容。我的端点接收到天蓝色存储的事件调用并执行 CRUD。

现在当 azure 存储数据中心暂时离线时,端点将继续运行,消息将进入死信队列。

我正在寻找一种方法来阻止我的端点消费消息,当我的存储和临时问题出现时,防止它们陷入死信。

0 投票
0 回答
76 浏览

azure - 死字消息

我们为一组队列启用了死信。但是由于法律义务,我们需要从死信队列中删除特定消息,或者在 TTL 之后根本不将它们死信。由于我们在命名空间中有超过十万个订阅,因此我们排除了在每个死信队列上创建接收器并删除它们的选项。

即使主题启用了死信,有没有办法不死信特定消息?有没有其他方法可以解决这个要求?

0 投票
1 回答
5913 浏览

c# - 如何在 Azure 函数中使用带有主题/订阅的 ServiceBus 触发器

我想创建一个在将新消息添加到主题/订阅时触发的 Azure 函数。

目前,我使用 ServiceBusQueueTrigger C# 模板创建了一个Azure 函数,并将队列名称设置为

Azure Functions ServiceBusQueueTrigger C# 模板

但我有这个例外:

Microsoft.ServiceBus:无法获取实体 'topic-test/Subscriptions/subscription-test',因为它不是QueueDescription类型。检查您使用的方法是否具有正确的实体类型。System.Runtime.Serialization:第 1 行位置 1762 中的错误。期望来自命名空间“ http://schemas.microsoft.com/netservices/2010/10/servicebus/connect ”的元素“QueueDescription” 。遇到名称为“None”的“无” ',命名空间''。.

无法在 Azure 函数中创建具有主题/订阅的 ServiceBusTrigger

我认为 Azure 函数正在使用MessagingFactory.CreateMessageReceiver来初始化消息泵,但不是。

目前是否支持主题/订阅?

0 投票
2 回答
2027 浏览

java - 通过 Azure Java SDK 向服务总线主题发送消息时出现 500 内部服务器错误

尝试通过 java azure sdk 向服务总线主题发送消息时遇到问题,我收到 500 Internal Server Error。

我根据此链接准备了代码:https ://azure.microsoft.com/en-us/documentation/articles/service-bus-java-how-to-use-topics-subscriptions/我的代码如下所示:

我可以使用 .NET 代码发送具有相同配置值的消息。

这是我收到的异常:“com.sun.jersey.api.client.UniformInterfaceException: POST https://NAMESPACE.servicebus.windows.net/TOPIC_NAME/messages?api-version=2013-07返回响应状态500 内部服务器错误”

我还有一个关于 api-version 的问题。为什么图书馆在请求中放了这么旧的 api 版本?我使用来自 maven 存储库的最新版本的 azure sdk:

0 投票
5 回答
13171 浏览

azure - 在本地使用 Azure 服务总线

我正在使用 Azure 服务总线主题和订阅。它用于跨应用程序发送控制消息。消息侦听器(订阅者)以工作角色运行,它们正在接收消息并处理请求。总线中的每条消息只能被拾取一次,即使有多个侦听器同时运行。

使用Service Bus没有问题;但是,我们在本地调试/测试应用程序时遇到了一些问题。我们有 2 条服务总线,1 条用于云端,1 条用于本地调试。现在,如果多人同时调试应用程序,则消息仅由系统中的一个(随机)选择。这是预期的行为,但在调试时会造成麻烦。

有什么办法可以将本地模拟器用于服务总线?我做了一些研究,但我找不到任何可靠的解决方案。有什么方法可以单独调试应用程序吗?

0 投票
1 回答
1119 浏览

c# - Azure 服务总线 - 多个主题?

简要总结一下我目前正在使用的内容:

我决定是否可以使用 1 个主题与需要 N 个主题以及相关元数据/过滤器来执行此操作。

我差不多有 3 件;现场单元连接到的套接字服务器(工作角色)、Azure 服务总线消息传递,最后是 Web 应用程序。用户可以通过 Web 应用程序将要发送到设备的命令排队,但我们需要能够将消息保留在队列中,直到设备上线,然后它将获取所有消息。这就是我困惑的地方...

我最初的工作是在网络应用程序上动态创建 1-9999 个主题(可以创建 10 000 个主题的限制,因此使用序列的最后 4 个字符)在排队的消息上。然后将在元数据中使设备完全串行。这样,当设备连接到套接字服务器时,我可以使用特定规则创建 N 个订阅,并在设备断开连接时关闭它们。

但现在我想知道我是否可以只有 1 个主题并将所有逻辑放在元数据中?

我对使用服务总线的 SQLFilters 非常陌生,因此将不胜感激任何帮助:)

0 投票
0 回答
114 浏览

azure - 在用户订阅模型中使用 Azure 服务总线

在只有订阅未过期的客户端应用程序才能从服务总线接收消息的情况下,您将如何使用服务总线?假设您有一项付费服务​​,用户可以在一段时间内购买您的消息订阅,因此您希望您的服务总线仅将新消息发送给选定的一组客户端(具有有效订阅的客户端)。如果对此的授权是在服务器端而不是在客户端应用程序上完成的,那就更好了。查看服务总线模型(队列、主题、中继),它们似乎都不适合这个用例。

我想实现的一种方法是每天更改 SAS 密钥并让客户端应用程序从 Web API 查询 SAS 密钥。因此,只有具有有效订阅的客户端才能刷新其 SAS 并从服务总线接收。不过,我不知道是否可以通过 API 更改 SAS。

Azure Service Bus 中对这种场景有更好的支持吗,或者你能想出更好的方法来实现它吗?