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 配置中。
是否可以批处理 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 配置中。