SqlServer トリガーから直接 ActiveMQ にデータをプッシュできるかどうか教えてください。
私は ActiveMQ のドキュメントを調べましたが、それへの参照は見当たりません。挿入のために DB をポーリングするサービスを使用できますが、トリガーは理想的なソリューションです。
SqlServer トリガーから直接 ActiveMQ にデータをプッシュできるかどうか教えてください。
私は ActiveMQ のドキュメントを調べましたが、それへの参照は見当たりません。挿入のために DB をポーリングするサービスを使用できますが、トリガーは理想的なソリューションです。
しかし、トリガーは理想的なソリューションです
絶対違う。これが悪い考えである理由はたくさんありますが、主なものを紹介します。
これらのいくつかは、アプリケーション トランザクションを分散トランザクション (2PC) にキューイング システムと共に登録することで解決できます。ActiveMQ の XA。これにより、最後の問題は解決されますが、重大な遅延が追加され、スループットが桁違いに低下するという犠牲が伴います。
推奨される解決策は、キューとして使用されるテーブルにトリガーをローカルでエンキューし、外部アプリケーションをこのテーブルからデキューして ActiveMQ にプッシュすることです。手抜きをせず、アプリケーションの状態を「キュー」として使用しないでください (つまり、状態をポーリングして「処理済み」としてマークする)。これが、「データベース内のキュー」試行の 99% が失敗する理由です。
データ ストレージをキュー ストレージから分割するときに固有の問題の一部を解決することはできません (一貫性のあるバックアップ/復元を実行できない、キューイングのように HA/DR のフェイルオーバーで「スプリット ブレイン」を実行する)。データベースのフェールオーバーなどには従いませんが、これらはService Brokerのようにデータベースに埋め込まれたキューイングとメッセージングを利用する場合にのみ解決できます。