当前位置:  开发笔记 > 编程语言 > 正文

Azure Service Bus - 循环到多个服务的主题

如何解决《AzureServiceBus-循环到多个服务的主题》经验,为你挑选了1个好方法。

这是场景:

Publisher #1 ????             ???? Round Robin ??????? Subscriber #1 (Service 1)
                ?             ?                   ???? Subscriber #2 (Service 1)
                ???? Topic ????
                ?             ?                   ???? Subscriber #3 (Service 2)
Publisher #2 ????             ???? Round Robin ??????? Subscriber #4 (Service 2)

我有一条消息需要由多个订阅者处理,但每个服务只有一个(每个服务都会运行多个实例).

消息#1需要由订户#1和#3处理.消息#2需要由订户#2和#4处理.消息#3,订户#1和#3再次.基本上,每条消息应循环到订阅每条消息的每个负载均衡服务,按连接的每个服务进行分组.这可能不创建多个主题吗?

即使它不是循环法,我也会尽最大努力在多个服务之间实现负载均衡.这可能吗?



1> Bishoy..:
1.主题

主题是一种发布/分发机制,每个订阅(订阅者)将发送一次消息.

主题订阅类似于接收发送到主题的消息的副本的虚拟队列.从订阅接收消息的方式与从队列接收消息的方式相同...

订阅支持本节前面关于队列描述的相同模式:竞争消费者,时间解耦,负载均衡和负载平衡.

资料来源:MSDN文章

您需要在竞争的使用者(服务实例)之间重新使用主题订阅来实现您的方案.

Publisher #1 ????             ???? Subscription 1 ??????? Service 1-instance 1
                ?             ?                      ???? Service 1-instance 2
                ???? Topic ????
                ?             ?                      ???? Service 2-instance 1
Publisher #2 ????             ???? Subscription 2 ??????? Service 2-instance 2

A.创建主题订阅

string connectionString = ""
var namespaceManager =
    NamespaceManager.CreateFromConnectionString(connectionString);

if (!namespaceManager.SubscriptionExists("TestTopic", "Inventory"))
{
    namespaceManager.CreateSubscription("TestTopic", "Inventory");
}

B.收听现有订阅

MessagingFactory factory = MessagingFactory.Create(uri, tokenProvider);

MessageReceiver receiver = factory.CreateMessageReceiver("TestTopic/subscriptions/Inventory");
2.队列

使用multiple Queues也可以适合您的特定场景.每个Queue拥有多个竞争消费者(实例)的消息只会将消息传递给第一个请求并成功处理它的客户端.

然后设计变成:

Publisher #1 ????         ???? Service 1 Queue ??????? Subscriber #1 (Service 1)
                ?         ?                       ???? Subscriber #2 (Service 1)
                ????ASB????
                ?         ?                       ???? Subscriber #3 (Service 2)
Publisher #2 ????         ???? Service 2 Queue ??????? Subscriber #4 (Service 2)

推荐阅读
Gbom2402851125
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有