rebus - 使用 T-SQL 将 Rebus 消息插入 SQL Server

标签 rebus

我想使用 Rebus 与第三方应用程序集成,通过向该应用程序的数据库添加触发器,以便触发器将以 Rebus 消息格式插入记录,其中包含有关数据库更改的信息(操作类型:插入、更新、删除、表名和行 ID)。请告诉我有什么方法可以轻松做到这一点,否则我需要通过查看 https://github.com/rebus-org/Rebus/blob/master/src/Rebus/Transports/Sql/SqlServerMessageQueue.cs 自己创建存储过程发送方式?

或者,我可以使用触发器中的参数来启动 exe,但它不是事务性的。

我也见过这个问题 https://github.com/rebus-org/Rebus/issues/119但我想这是个死主意。

也许还有其他推荐的方法?

更新:我刚刚意识到 Rebus 消息的正文是序列化的,因此在 SQL 中执行此操作是疯狂的(如果没有 SQL-CLR 甚至不可能),所以也许唯一的方法是创建使用 ReceiveMessage 方法的自定义传输以我自己的格式接受消息?

提前致谢:)

最佳答案

通过使用 SQL Server Service Broker,我与“SQL Server 中发生的事情”集成取得了出色的结果 - 不是直接(即作为 Rebus 传输实现),而是作为我可以从外部轮询的消息队列。

每当数据库中发生有趣的事情时,触发器就会查询一些表并选择结果集 for xml auto转换为 XML 消息,该消息将发送到服务代理队列。

然后,我有一个带有 System.Timers.Timer 的 Rebus 端点,它将轮询代理队列和将接收到的 XML 作为字符串的 bus.SendLocal - 这样,从解析 XML 开始的一切都将基于 Rebus 消息、重试和错误队列,以及随后的惯例可靠性:)

关于rebus - 使用 T-SQL 将 Rebus 消息插入 SQL Server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26493004/

相关文章:

c# - 在消息处理程序中创建 DbContext

c# - 我如何使用 cqrs 处理 claim 检查

rebus - 如何从 Rebus 检查错误队列

sql-server - 如何配置 Rebus 使其具有基于处理程序类型的主题

asp.net-mvc - .NET 异步核心中的 Rebus 崩溃

.net-core - Rebus 优雅关闭

rebus - NumberOfWorkers 和 MaxParallelism 选项的目的或关系是什么?

c# - 使用工厂解决依赖

nservicebus - 报告竞争消费者场景进展的方法

c# - Rebus,从异步处理程序创建 AppDomain/Instance 时出现异常