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

时间:2014-10-21 17:47:16

标签: rebus

我想通过向该应用程序的数据库添加触发器来使用Rebus与第三方应用程序集成,因此触发器将以Rebus消息的格式插入记录,其中包含有关数据库更改的信息(操作类型:insert,更新,删除,表名和行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方法自定义传输以自己的格式接受消息?

提前致谢:)

1 个答案:

答案 0 :(得分:2)

通过使用SQL Server Service Broker集成了“在SQL Server中发生的事情”,并没有直接(即作为Rebus传输实现),而是作为我可以从外部轮询的消息队列。 / p>

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

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