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

Transaction Scope in Pub/Sub + Message Label in Rebus

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

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

2) 在消费者中,我想将发布的数据保存在某个表中。从消息队列中读取消息并保存在数据库中(在我的处理程序中)必须在事务范围内完成。 Rebus 是如何做到这一点的?

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


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

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

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

3) 开箱即用,无法指定要在 MSMQ 消息上使用的标签。它将由 Rebus 设置为由此扩展方法指示的消息类型和 ID 组成的字符串。