From 9dc73616d6ce2cc7013d6c1eb587618562228a70 Mon Sep 17 00:00:00 2001 From: DBT Date: Thu, 12 Feb 2026 05:32:09 +0000 Subject: [PATCH] perf: implement concurrent outbound message dispatching in channel manager --- pkg/channels/manager.go | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/pkg/channels/manager.go b/pkg/channels/manager.go index 03add5f..7754bde 100644 --- a/pkg/channels/manager.go +++ b/pkg/channels/manager.go @@ -227,12 +227,15 @@ func (m *Manager) dispatchOutbound(ctx context.Context) { continue } - if err := channel.Send(ctx, msg); err != nil { - logger.ErrorCF("channels", "Error sending message to channel", map[string]interface{}{ - "channel": msg.Channel, - "error": err.Error(), - }) - } + // 使用 goroutine 实现并发消息分发,避免单个通道延迟阻塞全局 dispatcher + go func(c Channel, m bus.OutboundMessage) { + if err := c.Send(ctx, m); err != nil { + logger.ErrorCF("channels", "Error sending message to channel", map[string]interface{}{ + "channel": m.Channel, + "error": err.Error(), + }) + } + }(channel, msg) } } }