Rebus是否支持批量发送

Does Rebus support batch sending

是否可以批处理 Rebus 消息(使用 Azure 服务总线)? 原因是我们要发送很多消息来保存日​​志事件,想批量处理。

虽然旧版本的 Rebus 确实有一个批处理 API 用于将多个逻辑消息包装在一个传输消息中,但事实证明该功能带来的优势非常小,代价是在许多地方增加了复杂性。

如果你想发送批量消息,我建议你简单地编写你自己的消息批量消息,比如

public class BatchOfLogEvents
{
    public BatchOfLogEvents(IEnumerable<LogEvent> logEvents)
    {
        LogEvents = logEvents.ToArray();
    }

    public IReadOnlyCollection<LogEvent> LogEvents { get; }
}

然后你发送它并在另一端为它创建一个处理程序。


有关 Azure 服务总线的更新:请记住 Azure 服务总线有一个 256 kB maximum message size (or 1MB if you're on Premium)

此外:如果您还没有这样做,您可能会受益于启用消息的 GZip 压缩,方法是

.Options(o => o.EnableCompression())

在您的 Rebus 配置中。