From 683cf9176a8bc3887a7518b10830b1f4e0dc0578 Mon Sep 17 00:00:00 2001 From: xRain Date: Sat, 27 Jul 2024 01:33:17 +0800 Subject: [PATCH] add event loadbalancing --- Configurations/SimApiSynapseOptions.cs | 6 ++++++ Synapse/EventServer.cs | 7 ++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/Configurations/SimApiSynapseOptions.cs b/Configurations/SimApiSynapseOptions.cs index a490813..6aab27d 100644 --- a/Configurations/SimApiSynapseOptions.cs +++ b/Configurations/SimApiSynapseOptions.cs @@ -13,6 +13,12 @@ public class SimApiSynapseOptions public string? AppId { get; set; } public int RpcTimeout { get; set; } = 3; + /// + /// Event是否使用负载均衡 + /// 也就是订阅$queue主题,消息会分发给不同的AppId + /// 如果false,多个AppId都可以同时收到消息 + /// + public bool EventLoadBalancing { get; set; } = false; public bool EnableConfigStore { get; set; } = true; public bool DisableEventClient { get; set; } = false; public bool DisableRpcClient { get; set; } = false; diff --git a/Synapse/EventServer.cs b/Synapse/EventServer.cs index 57c7aee..d196cff 100644 --- a/Synapse/EventServer.cs +++ b/Synapse/EventServer.cs @@ -53,7 +53,12 @@ public partial class Synapse }; foreach (var ev in EventRegistry) { - var topic = $"$queue/{esTopicPrefix}{ev.Key}"; + + var topic = $"{esTopicPrefix}{ev.Key}"; + if (Options.EventLoadBalancing) + { + topic = "$queue/" + topic; + } var evSubOpts = MqttFactory.CreateSubscribeOptionsBuilder() .WithTopicFilter(o => o.WithTopic(topic)).Build(); Client.SubscribeAsync(evSubOpts).Wait();