我能够使用sql server作为延迟消息存储来编写自定义重试策略。但是现在,出于可伸缩性的原因,我想在不同的机器上运行多个worker(消息处理程序任务)。由于这个原因,我希望有一个中心位置来读取延迟消息(比如从队列中读取),而不是从sql server读取。
有没有办法将延期消息存储在队列中?这是一个更好的方法吗?这样做的最佳方法是什么?
答案 0 :(得分:1)
有没有办法将延期消息存储在队列中?这是一种更好的方法吗?
没有我熟悉的任何队列:)大多数队列都非常擅长fifo,这与延迟消息冲突,因为延迟可能因每个消息而异(至少在一般情况下)
访问订阅消息的愿望可能与它们发送的订单有很大不同,这使得具有二级索引的数据库成为存储延期消息的非常好的技术。
这样做的最佳方法是什么?
我不确定我理解你认为在SQL Server中存储延迟消息的错误。
当然,如果您有许多端点延迟消息,您可能希望使用“外部超时管理器”而不是让每个端点轮询数据库 - 这可以通过在端点中执行此操作来实现:
Configure.With(...)
.(...)
.Timeouts(t => t.UseExternalTimeoutManager("timeouts"))
.Start();
然后只需使用配置的超时存储和输入队列timeouts
启动端点。