在Rebus中为自定义重试消息配置队列

时间:2017-09-28 07:47:13

标签: rebus

我能够使用sql server作为延迟消息存储来编写自定义重试策略。但是现在,出于可伸缩性的原因,我想在不同的机器上运行多个worker(消息处理程序任务)。由于这个原因,我希望有一个中心位置来读取延迟消息(比如从队列中读取),而不是从sql server读取。

有没有办法将延期消息存储在队列中?这是一个更好的方法吗?这样做的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

  

有没有办法将延期消息存储在队列中?这是一种更好的方法吗?

没有我熟悉的任何队列:)大多数队列都非常擅长fifo,这与延迟消息冲突,因为延迟可能因每个消息而异(至少在一般情况下)

访问订阅消息的愿望可能与它们发送的订单有很大不同,这使得具有二级索引的数据库成为存储延期消息的非常好的技术。

  

这样做的最佳方法是什么?

我不确定我理解你认为在SQL Server中存储延迟消息的错误。

当然,如果您有许多端点延迟消息,您可能希望使用“外部超时管理器”而不是让每个端点轮询数据库 - 这可以通过在端点中执行此操作来实现:

Configure.With(...)
    .(...)
    .Timeouts(t => t.UseExternalTimeoutManager("timeouts"))
    .Start();

然后只需使用配置的超时存储和输入队列timeouts启动端点。