【发布时间】:2013-09-09 00:49:46
【问题描述】:
请告诉我将 sql 2012 数据库服务器与 activemq 链接的最佳做法是什么
我想要实现的是,每当数据库发生变化时,我的 ativemq 都应该更新一条消息,其中包含数据库中发生的变化。
1.那么我应该如何在我的数据库中编码(比如触发器?)。 2.数据应该如何发送到activemq?我们需要像 java 应用这样的接口吗?
【问题讨论】:
请告诉我将 sql 2012 数据库服务器与 activemq 链接的最佳做法是什么
我想要实现的是,每当数据库发生变化时,我的 ativemq 都应该更新一条消息,其中包含数据库中发生的变化。
1.那么我应该如何在我的数据库中编码(比如触发器?)。 2.数据应该如何发送到activemq?我们需要像 java 应用这样的接口吗?
【问题讨论】:
不要在数据库中这样做。在您的应用中执行此操作。
虽然 SQL Server 可以托管可以连接到 ActiveMQ 服务器并提交消息的 CLR 过程,但这样做是个坏主意:
更好的解决方案是在本地排队,进入您自己的数据库。要么使用table as a queue,要么使用Service Broker queues(顺便说一句,支持Activation)。然后,在提交后,从一个单独的侦听器进程处理这个本地队列。更高的可用性,更少的耦合,更高的吞吐量。如果真的需要 ActiveMQ,至少有一个本地中间队列将可用性解耦。让每个数据库操作等待外部 ActiveMQ XA 注册操作会降低您的吞吐量(DTC 是慢)并且您必须处理可用性问题(没有可用的 ActiveMQ 和 XA,数据库中没有更新可能) .
【讨论】: