問題タブ [service-broker]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
1581 参照

.net - SQL Server Service Broker の問題とチュートリアル

SQL Server Express 2005 に外部アクティベーターを実装することを検討しており、キュー、サービス、コントラクト、およびイベント通知をデータベースに追加しました。メッセージをターゲット キューに送信するトリガーも追加しました。すべてが解析され、実行され、トリガーが起動します。ただし、ターゲット キューから選択したり、クイック T-SQL スクリプトを使用してキューから受信したりすると、何も表示されません。

不思議なんだけど:

  1. それはどのように可能ですか?メッセージは自動受信されていますか?
  2. メッセージの送信中にメッセージが正しく到着したかどうかを確認する方法はありますか?
  3. トリガーが起動された後、サーバー上で非同期にプロセスを実行するより良い方法はありますか?

余談ですが、Service Broker の優れたチュートリアル資料を見つけるのは困難です。誰かリソースを持っている場合は、私に知らせてください。今、私は会社のオンライン リソースから本を読んでいますが、それでさえもフィルターするのが面倒です。

ありがとう、

ウィリアム

0 投票する
2 に答える
506 参照

sql-server - Windowsで変更されたFIFOセマンティクスを使用した作業項目処理システムの設計

バックエンド処理のためにキューに入れられる「作業項目」を生成するシステムを構築しています。私は最近、同じ要件を持つシステムを完成させ、最適とは思えないアーキテクチャを思いついたので、この新しいシステムについてのアドバイスを期待していました。

作業項目は一元的にキューに入れられ、基本的にFIFOの順序で処理する必要があります。これが唯一の要件である場合、私はおそらくMSMQまたはSQLServerサービスブローカーソリューションを好むでしょう。ただし、実際には、変更されたFIFO順序で作業項目を選択する必要があります。作業項目にはいくつかの属性があり、属性値の特定の組み合わせが存在する場合は、FIFO順に割り当てる必要があります。

例として、作業項目には、Office、Priority、Group Number、およびSequence Number(グループ内)の属性があります。複数のアイテムが同じグループ番号でキューに入れられる場合、それらはシーケンス番号の順序でキューに入れられることが保証され、同じ優先順位を持ちます。

特定のサービスの特定の構成パラメーターを指定して、変更されたFIFO順序で作業時間をプルするいくつかのバックエンドプロセス(現在はWindowsサービスとして実装されています)があります。ワシントンDCを実行しているサービスは、DCの作業項目のみを処理するように構成されていますが、NYのサービスは、NYとDCの両方の項目を処理するように構成されている場合があります(主に全体的なスループットを向上させるため)。このタイプの選択性に加えて、優先度の高いアイテムを最初に処理し、同じ「グループ番号」を含むアイテムをシーケンス番号の順序で処理する必要があります。したがって、NYサービスがシーケンス1のグループ100のDCアイテムを処理している場合、シーケンス1はまだ完了していないため、DCサービスがグループ100のシーケンス2のDCアイテムをプルオフすることは望ましくありません。他のグループのアイテムは、引き続き処理の対象となる必要があります。

最後のシステムでは、SQLテーブルを使用してキューを実装しました。アイテムを送信し、さらに重要なことに、アイテムの処理を担当するWindowsサービスにアイテムを「割り当てる」ためのストアドプロシージャを作成しました。割り当てストアドプロシージャには、上記で説明した選択ロジックが含まれています。各Windowsサービスは、割り当てストアドプロシージャを呼び出し、サービスのそのインスタンス(適格なオフィスなど)に固有のパラメーターを渡します。この割り当てストアドプロシージャは、割り当てられた(処理中の)ワークアイテムにスタンプを付け、作業が完了すると、最後のストアドプロシージャが呼び出され、アイテムが「キュー」(テーブル)から削除されます。

このソリューションには、単純なSQLselectステートメントでこれらの「キュー」の状態をすばやく調べることができるという点でいくつかの利点があります。キューを簡単に操作することもできます(たとえば、単純なSQL更新ステートメントで優先順位を上げることができます)。ただし、欠点として、これらのキューテーブルのデッドロックに対処しなければならず、これらのストアドプロシージャを作成する必要があります(しばらくすると面倒になります)。

どういうわけか、MSMQ(WCSの有無にかかわらず)またはServiceBrokerのいずれかがより洗練されたソリューションを提供できるはずだと思います。自分のキューイング/作業項目処理システムをローリングするのは、気分が悪いだけです。しかし、私が知る限り、これらのテクノロジーは、割り当てプロセスに必要な柔軟性を提供していません。私は自分が間違っていることを望んでいます。どんなアドバイスでも大歓迎です。

0 投票する
4 に答える
17568 参照

sql - トランザクションに MSMQ または SQL Service Broker を使用する必要がありますか?

チーム リーダーから、製品の新しいバージョンのオプションとして MSMQ を調査するように依頼されました。現在のバージョンでは SQL Service Broker を使用しています。どの製品が私のニーズに適しているかを見つけるために、実験とグーグルをかなり試しましたが、プログラミングの回答については、私が知っている最高のサイトに尋ねようと思いました.

いくつかの詳細:

  • クライアントは .NET 1.1 および 2.0 コードです。ここからメッセージが送信されます。
  • SQL Server 2005 インスタンスのターゲット。すべてのメッセージは、最終的にデータベースの更新または挿入になります。
  • トランザクションとして扱われなければならないいくつかの更新を送信します。
  • メッセージを完全に復元できる必要があります。メッセージが失われることはありません。
  • ターゲットの SQL サーバーがダウンしている場合でも、非同期でメッセージを受け入れることができる必要があります。
  • 独自のキューイング ソリューションを開発することはできません。私たちは小さなチームです。

これまでに発見したこと:

  • MSMQ と SQL Service Broker の両方がこの仕事を行うことができます。
  • トランザクション メッセージの場合、Service Broker の方が高速なようです。
  • Service Broker はどこかで実行されている SQL サーバーを必要としますが、MSMQ はどこかで実行されている構成済みの Windows マシンを必要とします。
  • MSMQ は、クラスターでのセットアップ/実行がより優れている/高速である/簡単であるように見えます。

何か不足していますか?ここに明確な勝者はいますか?考え、経験、またはリンクは高く評価されます。ありがとうございました!

編集: 一部のクライアント コードでカスタム DB フレームワークを使用しているため、サービス ブローカーを使用することになりました (トランザクションをより適切に処理します)。そのコードはトランザクションの SQL をキャプチャしましたが、. クライアント コードもすべて .NET のバージョン 1.1 だったので、すべてのクライアント コードをアップグレードする必要がありました。ご協力いただきありがとうございます!

0 投票する
1 に答える
3909 参照

.net - SQL Service Broker と .NET Windows サービス - ベスト プラクティス?

現在、レガシー アプリケーションから更新されるデータベースがあります。SQL Service Broker キューを利用して、レコードが更新されたときにメッセージが (トリガーなどを使用して) キューに入れられるようにしたいと考えています。

次に、キューを常に「リッスン」してメッセージを取得し、別のアプリケーションのために処理する、長時間実行されるアプリケーション (.NET で記述された Windows サービス) が必要です。

Web でサンプル コードを見つけたので、そのコードがしっかりしているかどうかについて意見を求めました。したがって、これは Windows サービス クラスの省略版です。

どう思いますか?コードは、私が望んでいたとおりに機能します。しかし、SQL コマンドを含む新しいスレッドをスピンオフするという考えは、無限ループ内でタイムアウトすることはありません。私は少し神経質になります。

0 投票する
1 に答える
150 参照

.net - .Net データベース メッセージ ブローカリング

データベース レベルからアプリケーション メッセージ ブローカリングを実行するためのシンプルで信頼性の高いメカニズムを探しています。基本的に、共通のオブジェクト間で変更が発生したことを示すメッセージを相互に生成するには、2 つの異なるアプリケーションを変更する必要があります。問題は、両方のシステムがこれらの共通オブジェクトを定義する独自のデータベース スキーマを持っているという事実にあります。

メッセージ ブローカ サービスを作成するために BizTalk ソリューションを追求する価値はありますか?それとも、標準の .Net アプローチまたは商用コンポーネントを使用して同じことを実現する簡単な方法はありますか?

ありがとう、

ブライアン。

0 投票する
2 に答える
1621 参照

sql-server - Service Broker キューのフラッディングを減らす方法は?

SQL Service 2005 Service Broker を初めて使用します。キューを作成し、会話を正常に開始しました。ただし、メッセージを「調整」したいのですが、その方法がわかりません。

メッセージは、マルチユーザー アプリケーションによって呼び出されるストアド プロシージャによって送信されます。20 人のユーザーがこの proc を 30 秒以内に 1 回ずつ呼び出すとします。送信する必要があるのは 1 回だけです。メッセージが過去 30 秒以内に送信されたかどうかを確認するには、proc から何らかの方法が必要だと思いますか? それを行う方法はありますか?

私が持っていた 1 つのアイデアは、要求キューのアクティブ化プロシージャが呼び出されたかどうかを示すメッセージを「応答」キューに送信することでした。次に、ストアド プロシージャ (ユーザー アプリによって呼び出される) で、その特定のメッセージが最近呼び出されたかどうかを確認します。問題は、これが応答キューを台無しにしたくないことです。メッセージが存在するかどうかを確認するために、(受信ではなく) キューを覗くことができますか?

または、私が求めていることを達成するためのより簡単な方法はありますか?

0 投票する
7 に答える
102385 参照

messaging - メッセージ ブローカと ESB の違い

Message Brokers と ESB に関するさまざまな質問/記事を調べました (stackoverflow でも)。Message Broker と ESB の明確な違いは何ですか? ここで、製品、Websphere Broker と Mule ESB を比較しようとしています!!

まず、(任意のバージョンの) Webshere Broker は ESB ですか? 私たちの IBM 製品担当者は、それが ESB であると主張しています (私はそれについて驚くことはありません)。

私の限られた情報によると、Message Broker は HUB-SPOKE モデルで動作します。ただし、ESB はバス アーキテクチャで動作します。一体、それは何を意味するのだろうか?HUB が失敗した場合 (利用できないと思われます)、ブローカーは完全に失敗します。これはESBの場合ではありません(だから彼らは言います)。ここで理解できないのは、「バスに障害が発生した場合」です。

ESB とブローカーに関する通常の機能は、ルーティング、変換、オーケストレーションなどを提供することです。したがって、両方がこれを提供する場合、なぜ一方を他方よりも選択するのでしょうか。

対立の別の領域は、変換に関するものです。ESB は、メッセージ ブローカとは異なる方法でそれを促進しますか? これについての洞察が本当に欲しいです。

ここで、HORIZONTAL スケーリングについて説明します。誰が誰よりも優れていますか?または、複雑さ(またはその他の要因)の点で、両方とも同じようにスケーラブルです。もちろん、コスト面では、Webspere Broker はボックスごとに (もちろん CPU ごとに) 料金を請求します。私は、商用の MULE ESB でさえそれをしないと信じています。コストの部分は別として、ESB スケーリングとメッセージ ブローカ スケーリングの意味は何ですか。ESB でサービス レベルまでスケールアップできることをたまたま知っています。これはメッセージ ブローカで可能ですか?

0 投票する
1 に答える
392 参照

sql-server - SQL サービス ブローカーの機能に関する質問

私は野心的な Web アプリケーション プロジェクトに取り組んでいる初心者の Web 開発者です。

それで、いくつかの調査を行った後、SQL Service Broker について知りました。何とか使えそうですが、よくわかりません。それを学ぶには誰かが多くの時間を費やす必要があるので、それが自分のニーズに合っていることを確認したかった.

Web サイトのユーザーが Web サイトにテキストを送信できるシステムを実装する必要があります。このメッセージ ストリームは冗長で、FIFO 方式で処理する必要があります。ストリームの反対側では、別のユーザー グループがメッセージを処理します。

ここで、この最後のユーザー グループの 1 人が読んでいるメッセージは、他の誰も同時に読むことができないようにロックする必要があります。その後、ユーザーはメッセージを処理するかどうかを決定できます。彼がメッセージを処理することを決定した場合にのみ、メッセージをキューから削除できます。彼がメッセージを処理したくないと判断した場合、別のユーザーがそれを読んで決定できるように、メッセージをキューに戻す必要があります (キューの最後に、または少なくとも最高の優先順位で)。 .

これは SQL Service Broker で実装できるものですか? 私は間違った道を進んでいますか?

ありがとうございました!