任何人都可以告诉我是否可以将数据从SqlServer触发器直接推送到ActiveMQ。
我已经通过ActiveMQ文档进行了搜索,但没有看到任何对它的引用。我们可以使用轮询DB进行插入的服务,但触发器将是理想的解决方案。
答案 0 :(得分:2)
但触发器将是理想的解决方案
绝对不是。有很多理由说明这是个坏主意,但我会给你主要的理由:
其中一些可以通过在分布式事务(2PC)中与排队系统一起注册app事务来解决,即。 XA for ActiveMQ。这解决了最后一个问题,但代价是增加了严重的延迟并将吞吐量降低了几个数量级。
提倡的解决方案是让触发器在table used as a queue中本地排队,并让外部应用程序从此表中出列并推送到ActiveMQ。不要偷工减料并将您的应用程序状态用作“队列”(即轮询状态并标记为“已处理”),这就是99%的“数据库中的队列”尝试失败的原因。
当您从队列存储中拆分数据存储时,您仍然无法解决一些固有的问题(无法进行一致的备份/恢复,对于HA / DR的故障转移,“拆分大脑”排队不遵循数据库故障转移等)但这些只有在购买数据库中嵌入的排队和消息时才能解决,如Service Broker。
答案 1 :(得分:0)
我想说可以在Sql Server中创建一个UDF,该UDF在.NET中运行代码并创建一个UDP / TCP连接ActiveMQ服务器。
我已经通过SqlServer数据库完成了很多联网工作,从而在本地网络中创建了非阻塞连接。