sql >> データベース >  >> RDS >> Sqlserver

WindowsサービスとSQLServerを使用したOneWayWCFメッセージのキューイング

    私はDBAなので、私の応答にフレーバーがありますが、これが私がすることです:

    1. SQL 2005以降を使用している場合は、メッセージをテーブルに保存するのではなく、ServiceBrokerを使用してデータベースに保存します。これでキューイングメカニズムが得られるので、MSMQを取り除くことができます。テーブルもありますが、会話ハンドル(基本的にはメッセージへのポインタ)と、このメッセージを試行した回数が格納されます。最後に、再試行のしきい値に達したメッセージが送信される、ある種の「デッドレターボックス」が必要になります。
    2. メッセージ処理コードで、次の手順を実行します。
      • トランザクションを開始します
      • キューからメッセージを受信する
      • 再試行回数がしきい値よりも大きい場合は、デッドレターボックスに移動してコミットします
      • このメッセージのテーブルのカウンターを増やします
      • メッセージを処理する
      • 処理が成功した場合は、トランザクションをコミットします
      • 処理が失敗した場合は、同じ内容の新しいメッセージをキューに入れてから、トランザクションをコミットします

    計画されたロールバックがないことに注意してください。 ServiceBrokerでのロールバックは悪い場合があります。受信に成功せずに5回ロールバックすると、キューはエンキューとデキューの両方で無効になります。ただし、処理の途中でメッセージプロセッサが停止した場合(つまり、サーバーがクラッシュした場合)のトランザクションが必要です。



    1. 1つの表に行がない可能性がある複数の表からの選択によるOracleInsert

    2. groupbyによって返されたレコードの数をカウントします

    3. SQL Server(C#クライアント)に大量のデータを一括挿入するための最速の方法は何ですか

    4. Dockerを使用したnodeJSでのPostgresのECONNREFUSED