2

我将 Rebus SQLTransport 与 XML 序列化消息一起用于与 SQL Server 集成。消息表示在 SQL Server 中完成的更改。因此,消息传递的顺序是必不可少的。

这是因为例如 message1 可能包含在 message2 中引用(通过 id)的对象。另一个例子是 message1 可能包含一些对象的删除请求,该请求需要从 message2 接受新对象。

将消息聚合成一条消息会非常复杂,因为消息是由触发器生成的。

拥有消息幂等性和一个工人我想这会起作用,除了如果发生错误并且消息将被移动到错误队列中将不起作用的事实。由于验证或业务逻辑异常,该错误很可能发生。正因为如此,我相信只有人类才能解决消息问题,并且在此之前不应传递其他消息。所以我想征求意见,在这种情况下最好做什么。据我所知,重试次数不能设置为无穷大,所以我应该停止处理程序内部的服务,直到问题被人解决?

提前致谢

4

1 回答 1

3

如果重要的是消息按顺序处理而没有任何“漏洞”,我建议您为每条消息分配一个序列号。

这样,如果端点收到序列号大于预期序列号的消息,它可以抛出异常,从而防止处理乱序消息。

我只会在错误不常见的情况下这样做,并且只有在消息量相当小的情况下才会这样做。

如果需要按顺序处理,更好的设计是使用另一个支持模型的消息处理库,我认为这比 Rebus 的模型更适合您的场景。

于 2014-11-12T20:08:03.087 回答