Pub/Sub 中的事务范围 + Rebus 中的消息标签

Transaction Scope in Pub/Sub + Message Label in Rebus

目前我正在使用 WCF 作为服务总线。但我想切换到更强大的服务总线。我选择了 Rebus。 我对 Rebus 有点陌生。我有一些问题:

1) 我的数据保存在数据库中 table。我希望发布者每 n 秒读取一次所有持久化数据并将其发布给订阅者,然后将发送标志设置为数据库中的数据。 有发布时间吗? 读取和发布以及更改(设置标志)数据必须在事务范围内完成。 Rebus 中有定义的解决方案吗?

2) 在Consumer中,我想将发布的数据保存在一些table中。从消息队列中读取消息并保存在数据库中(在我的处理程序中)必须在事务范围内完成。 Rebus 是怎么做到的?

3) 已发布消息的消息标签设置为随机唯一字符串。我想为创建的 MSMQ 消息设置自定义标签。有什么解决办法吗?

1) 当涉及到定期查询数据库表时,你只能靠自己了——Rebus 中没有内置机制可以做到这一点。

我可以推荐你看看 System.Timers.Timer 或类似的东西。

2) 您可以使用 Rebus.TransactionScopes 程序包在 Rebus 处理程序中启用自动事务范围。

3) 开箱即用,无法指定要在 MSMQ 消息上使用的标签。 Rebus 会将其设置为由 this extension method.

指示的消息类型和 ID 组成的字符串