問題タブ [message-queue]

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 に答える
504 参照

.net - リモートでトリガーされたジョブを実行するときのなりすまし

私の (.NET) アプリでは、ユーザーはデータベースの値を微調整できます。次に、Crystal または Reporting Services の編集に基づいてレポートを生成する必要がありますが、それは重要ではありません。重要なのは、生成がローカル ボックスで確実に行われるわけではないということです。たとえば、Crystal Reports がない可能性があります (または何でも)マシンにインストールされています。

そのため、ネットワーク マシン (レポートを生成できる) にメッセージ キューを設定すると、アプリはそのキューにメッセージを投稿し、必要なすべての情報を含むオブジェクトを送信します。ここまでは順調ですね。

ルールとトリガーを使用してターゲット キューを構成したので、新しいメッセージが送信されると、そのリモート マシン上のコンソール アプリが自動的にメッセージの処理を試みます。

問題は、すべて正常に動作するにもかかわらず、トリガーされたコンソール アプリがローカル コンピューター アカウントとして実行されることです。アプリは、統合認証を使用するデータベースと対話する必要があります。

コンソール アプリは、実際のユーザーとして実行すると完全に機能しますが、メッセージ キューによってトリガーされた場合は機能しません。

問題は、ルール、トリガー、またはコンソール アプリを特定のユーザーとして実行するように構成できますか? 見えると思われるすべての設定オプションを試しましたが、役に立ちませんでした。

おそらく、アプリのコード自体 (app.config) 内でユーザーになりすますことができますか? ASP.NETコードでは実行可能ですが、WinForms コードでは実行できません。

編集:なりすましの提案はうまく機能します... Process.Start()関数から「アクセスが拒否されました」というエラーが発生するまで、startwithcreateprocess()を呼び出します。

私が偽装しているユーザーには、ローカルボックスでプロセスを実行する権限があります(したがって、問題なくネイティブに実行できます)。

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

c - fork() で動作するシステム V メッセージ キューを取得できないのはなぜですか?

ここにプログラムがあります:

プログラムは、開始して 4 つのスレッドに分岐することになっています。最初の 3 つのスレッドは、msgget() を呼び出して、システム V メッセージ キューを作成します。

次に、それらはすべて msgrcv() を呼び出し、別の ID が発生するのを待ちます。

4 番目のスレッドは、クライアントの接続をリッスンし、msgsnd() を呼び出します。なんらかの理由で、メッセージを待っているフォークはどれも再び目覚めませんでした。

  1. メッセージキューが正しいと確信しています。

  2. msgsrcv の前に print ステートメントがあるので、ステートメントごとにフォークが正しく行われていることがわかります。その後にprintステートメントもあるので、コードがそれを渡していないことがわかります。

  3. コマンドプロンプトから ipcs を実行しました。

  4. 間違いなく作成されたメッセージ キューがあり、その中にメッセージが含まれています。

  5. msgrcv を「0」に変更すると、スレッドの 1 つが起動しますが、それは私が望む動作ではありません。

  6. msgget() はエラーをスローしません。

  7. msgsnd() はエラーをスローしませんでした。

  8. 構造内のIDが正しいと確信しています。

私が間違っていることはありますか?

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

c - Linux の System V メッセージ キューが期待どおりに動作しない

システム v メッセージ キューを使用する大規模なアプリケーションで発生している問題を再現する次のアプリケーションがあります。基本的に、メイン関数はキーを生成し、msgget() でメッセージ キューを作成します。次に、それぞれ異なる ID を持つ 3 つのフォークが生成されます。それぞれが異なる正数で msgrcv を実行します (したがって、異なるメッセージを待っています)。

その後、メインは数秒間スリープし、id = 3 にメッセージを送信します。ただし、ウェイクアップするのは 3 番目のスレッドではなく、別のスレッドです。このコードは完全に分離されているため、自分で試すことができます。このコードの何が問題になっていますか?

2 を待つと、構造体に mtype が正確に2 に設定されているメッセージが表示されます。3 の場合は 3 などです。私の参照ポイントは、このガイドでした: http://www.ecst.csuchico.edu/~beej/guide/ipc/mq.html。誰でも助けてもらえますか?(正常にテストするには、自分のマシン上の有効なファイルを指すようにコードの ftok 行を変更する必要がある場合があります)。EeePC 1000H で Fedora 10 を実行しています

0 投票する
6 に答える
7218 参照

queue - メッセージング、キュー、および ESB - 行きたい場所はわかっているが、そこにたどり着く方法がわからない

簡単に言うと、私は、通常の理由で大規模な Web アプリケーションを書き直すプロジェクトに取り組んでいます。書き換えの主な目的は、単一のサーバーで実行されているこの大きな単一のアプリケーションを、多くのサーバーで実行できる多くの小さな分離アプリケーションに分離することです。

ここに私が望むものがあります:

HTTP私は主要な輸送メカニズムになりたいです。たとえば CMS などの 1 つのアプリケーションが更新されると、HTTP 経由でブローカーに連絡し、言うと、ブローカーは言うために a を"I've changed"送り返します。200 OK"thanks I got the message"

次に、ブローカーは、CMS の変更について知りたいと思っている他のアプリケーションのリストを調べ、メッセージについて知りたいとブローカーに伝えたときにアプリケーションが残した URL にメッセージを渡します。

他のアプリケーションは200 OK、メッセージを受信すると戻ります。そうでない場合、ブローカーはメッセージを保持し、誰かが次にそのアプリケーションに接続しようとするときに備えてキューに入れます。

問題は、どこから始めればよいのか、それを実現するために何が必要なのかさえわからないことです。私は 、 、 などを見てきましたがXMPPActiveMQ来年RabbitMQMule ESBこのようなものと一緒に円を描いて過ごすことができることがわかります。

私は難しい方法でレッスンを学ぶことを避けたいので、誰かが個人的な経験からアドバイスを提供できますか.

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

select - Boost Message Queue not based on POSIX message queue? Impossible to select(2)?

I thought I'd use Boost.Interprocess's Message Queue in place of sockets for communication within one host. But after digging into it, it seems that this library for some reason eschews the POSIX message queue facility (which my Linux system supports), and instead is implemented on top of POSIX shared memory. The interface is similar enough that you might not guess this right away, but it seems to be the case.

The downside for me is that shared memory obtained via shm_open(3) does not appear to be usable with select(2), as opposed to POSIX message queues obtained via mq_open(3).

It seems like Boost's library loses in this case. Does anyone understand know why this should be? Even if it POSIX message queues are only available on some systems, I'd expect Boost to use that facility where it is available, and reimplement it only where necessary. Is there some pitfall of the POSIX system which I do not yet recognize?

0 投票する
6 に答える
14313 参照

c - TCP ソケットの代わりに POSIX メッセージ キューを使用する - 「接続」を確立する方法は?

TCP 経由で通信するクライアント プログラムとサーバー プログラムがあります。代わりに POSIX メッセージ キューを使用しようとしています (もちろん、クライアントとサーバーが同じマシン上にある場合)。私の希望は、パフォーマンスが向上することです (具体的には、待ち時間の短縮による)。

私はそのほとんどを解決しましたが、「接続」を確立する方法が 1 つあります。サーバーは複数のクライアントからの接続を同時に受け入れるため、次のように TCP 接続確立プロセスをエミュレートしたくなります。

  1. サーバーは既知の名前でキューを開き、そこから継続的に読み取ります ( select(2)TCP と同様に使用できます)。
  2. クライアントは 3 つのキューを開きます。そのうちの 2 つは任意の名前 (衝突を避けるための PID などの一意性を含む) で、もう 1 つはサーバーで使用される既知の名前です。
  3. クライアントは、クライアントのキュー名を含む「接続」メッセージをサーバーのキューに送信します (1 つはクライアントからサーバーへのトラフィック用に指定され、もう 1 つはその逆用に指定されます)。
  4. サーバーは、クライアントの接続メッセージで指定されたキューを開き、クライアントからサーバーへのキューから読み取り (選択) を開始します。
  5. クライアントは、既知の名前でサーバー キューを閉じます。双方向通信は、クライアントによって指定された 2 つのキュー (各方向に 1 つ) を使用して続行されます。

おそらく、この方式が一般的な TCP 方式に似ていることがお分かりいただけると思いますが、これは偶然ではありません。ただし、知りたいのは:

  1. それを行うためのより良い方法を考えることはできますか?
  2. 私の方法に潜在的な問題はありますか?
  3. 同じマシンで TCP の代わりにメッセージ キューを使用すると実際にパフォーマンス (レイテンシ) が向上する可能性など、他に何か考えはありますか?

以前に POSIX メッセージ キューを使用したことがないことに注意してください (以前は IBM WebSphere MQ を使用していましたが、それはかなり異なります)。プラットフォームは Linux です。

0 投票する
3 に答える
2698 参照

python - Python でバッファのような構造を実装する

各リクエストの後にいくつかのオブジェクトを外部キューに入れる小さな wsgi アプリケーションを作成しようとしています。これをバッチで作成したい、つまり. ウェブサーバーにオブジェクトをメモリ内のバッファのような構造に配置させ、バッファが十分に大きい場合または特定のタイムアウト後にこれらのオブジェクトをバッチでキューに送信し、バッファをクリアする別のスレッドおよび/またはプロセスを作成します。私は NIH シンドロームにはなりたくないし、スレッド処理に煩わされたくもありませんが、この仕事に適したコードを見つけることができませんでした。助言がありますか?

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

windows - マネージコードでメッセージを待っています

これは以前の質問と密接に関連しています。

管理された世界では:

  • 現在のスレッドのメッセージキューにメッセージがあるかどうかを確認するにはどうすればよいですか?
  • OSに譲り、現在のスレッドでメッセージ(GetMessageやWaitMessageなど)を待つにはどうすればよいですか?

PInvokeのないマネージド同等物を探しています。

0 投票する
8 に答える
19987 参照

python - Python/Django とメッセージ キューに関するアドバイス

Django にアプリケーションがあり、さまざまなユースケースで多数の電子メールをユーザーに送信する必要があります。明らかな理由から、アプリケーション内でこれを同期的に処理したくありません。

Python とうまく統合できるメッセージ キューイング サーバーの推奨事項はありますか、または Django プロジェクトで使用したことがありますか? 私のスタックの残りは、Apache、mod_python、MySQL です。

0 投票する
3 に答える
4110 参照

c# - C# と VS.NET 2005 を使用した遅延時のキューからのメッセージの処理

これは、キューのセットアップです。

  1. キューはパブリックであり、トランザクションとしてマークされています。
  2. Web サービスは、メッセージをキューに挿入する役割を果たします。
  3. Windows サービスがキューでリッスンしています

では、20 分以上経過したメッセージのみを処理するにはどうすればよいでしょうか?