azure - 如何使用 Azure 服务总线队列作为服务器/客户端场景

标签 azure azureservicebus azure-queues

我正在尝试重写我的服务器/客户端(基于 TCP 的连接)程序以使其使用 Azure 服务器总线队列,但我无法弄清楚如何“组织”来自/发往不同客户端的队列和消息一种阻止它们被彼此阅读的方法。

让我从这个场景开始: 1 - 客户端连接到队列并将登录消息(用户名/密码)放入登录队列中。

2 - 服务器读取消息发现其中一个客户端正在尝试登录,它读取消息,检查提供的详细信息并将结果放入 LOG-IN-RESULT 队列中。

3 - 客户端假设从 LOG-IN-RESULT 中读取,但如何保证它正在读取其结果而不是另一个客户端的结果?

抱歉缺少代码,我猜这个问题纯粹是关于结构/原理的。

谢谢

最佳答案

首先,我不能说你们的基于队列的系统适合登录场景。但就您的情况而言,我认为基于 Azure 可以有三种选择。

<强>1。使用订阅查询(不推荐)

Azure 服务总线具有主题和订阅功能。 您可以创建查询来接收完全相同的Guid。我没有测试这种情况下的性能,但它的功能如下。

namespaceManager.CreateSubscription("LoginTopic", "LOG-IN-RESULT", new SqlFilter("RequestGuid = '3872-ACD3-38FB-2311-2002'"));

有关订阅的更多信息,请阅读此文档:link

<强>2。使用Azure存储表

Azure Table 提供查询功能,因此您可以立即使用它,如下 Odata 查询。

https://myaccount.table.core.windows.net/LoginTable(PartitionKey='LOG-IN-RESULT',RowKey='3872ACD338FB23112002')

有关 Azure 表的更多信息,请参阅此 link .

<强>3。使用 Azure Sql 或其他 RDBMS。

我想你已经知道了。只需插入并选择即可。

关于azure - 如何使用 Azure 服务总线队列作为服务器/客户端场景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39329807/

相关文章:

azure - 为什么按时间戳(字符串)排序的 Azure Cosmos 查询比按 _ts(内置)排序的成本高得多?

c# - 如何使用 Azure Functions 输出绑定(bind)设置服务总线消息的 MessageId?

azure - 如何获取用于资源组部署的最新 Azure 库模板?

azure - 将数据从 Sql 服务器复制到 Databricks delta Lake 时(sql 笔记本事件)空白值填充为 Null 值

c# - 使用 C#(无 JavaScript)将 Blazor WebAssembly 文件直接分块到 Azure Blob 存储

node.js - 如何使用 Azure 函数绑定(bind)发送计划的服务总线队列消息?

c# - Azure 服务总线上的主题 DefaultMessageTimeToLive 和订阅 DefaultMessageTimeToLive 之间的区别

node.js - 我可以从 nodejs web 应用程序使用 azure webjobs sdk 吗?

python - 如何检查Azure服务总线队列是否为空?

Azure:同步卸载内存密集型任务?