問題タブ [producer-consumer]
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.
c# - についてのいくつかの質問:wcfセルフサービス、消費者/プロデューサー
いくつか質問があります。
1.内部ネットワークプロセス通信用のwcfセルフサービスでは、サービスは最小時間で何回の呼び出しを処理できますか?
2.負荷分散またはnoramlの例を使用した、プロデューサー/コンシューマー用のジェネリックラッパーのオープンソースコードを持っている人はいますか?
男
c# - 一般的なプロデューサー/コンシューマーでタスクを使用する
BlockingQueue を使用して一般的なプロデューサー/コンシューマーを構築しようとしています。
すべてのコンピューター リソースを消費せずに、できるだけマルチ スレッド化または並列化したいと考えています。
プロデューサーが 1 つあるとします。データを消費するときに、スレッドとしてコンシューマーを使用するか、タスクを使用して 1 つのコンシューマーを使用する方がよいでしょうか?
また
jms - ActiveMQ: MessageConsumer のセレクター プロセスはブローカーまたはクライアント側にありますか?
誰かがこれについて私が正しいか間違っているかを確認してください。「セレクター」操作は MessageConsumer 実装内で行われるようです。(つまり、すべてのメッセージが Message Broker から MessageConsumer にディスパッチされ、それらのメッセージに対して「セレクター」操作が実行されます)。この問題は、関心のない (つまり、セレクターに一致しない) メッセージが大量にある場合に発生します。これらのメッセージは、プリフェッチまたはキャッシュの制限により、最終的に MessageConsumer の内部キューをいっぱいにします。その結果、新しいメッセージ、特にセレクターで関心のあるメッセージを受信できなくなります。
では、MessageBroker 側でセレクター操作を実行するように AMQ を構成する方法はありますか? 「インターセプター」を調べて、独自の BrokerPlugin を作成する必要がありますか? この問題を回避する方法について何かアドバイスはありますか?
どんな答えでも本当に感謝しています。
ありがとう、Soonthorn A.
java - 生産者消費者問題のバリアントのデータ構造の選択
現在、複数のプロデューサーと単一のコンシューマーを持つキューがあります。
コンシューマ スレッドの動作が遅い。また、コンシューマーはピーク操作によってキューから要素を取得し、消費操作が完了するまで、要素をキューから削除することはできません。これは、プロデューサー スレッドがサイド オペレーションとして、その時点で完全に処理されていないすべての要素のスナップショットも取得するためです。
ここで、複数のコンシューマーをサポートするようにコードを変更したいと考えています。たとえば、3 つのスレッドがあるとします。1 つのスレッドが最初の要素を取得し、peek 操作で読み取ることができます。2 番目のコンシューマー スレッドは 2 番目の要素を取得できますが、キューが 2 番目の要素の取得をサポートしていないため、それを取得する方法がありません。
そのため、標準の ConcurrentLinkedQueue (私が現在使用している) を使用するオプションはありません。
プライオリティ キューを使用することを考えていますが、各要素に、この要素が既にスレッドによって使用されているかどうかを示すフラグを関連付ける必要があります。
この問題に最も適したデータ構造はどれですか?
java - javaプロデューサー-コンシューマー常に終了するとは限りません
リストから名前を読み取り、外部サーバーを呼び出してtrue / falseステータスチェックを行い、trueステータスのユーザーにアクションを実行するシステムがあります。外部サーバーへの呼び出しには時間がかかるため、すべてを1つのスレッドで実行するのはあまり効率的ではありません。
私は現在、多くのコンシューマースレッドがリストから名前を読み取り、外部サーバーを呼び出し、有効な名前をブロックキューに入れ、単一のコンシューマーがキューからアイテムを選択してアクションを実行するプロデューサー/コンシューマーシステムとして実装しようとしています。 。ただし、残念ながら、システムが完了するまで実行されることもあれば、無期限にハングすることもあります。テストコードは次のとおりです
どこが悪いのか教えてください。
java - PHP および Java のプロデューサー コンシューマー
PHPコード(プロデューサー)へのHTTP呼び出しを介してリクエストを取得するシステムがあります。このコードは、リクエスト パラメータを MYSQL(queue) のテーブルに追加します。これは、Java プログラム (コンシューマー) によって取得および処理されます。私の最初の実装では、プロデューサーとコンシューマーの両方が PHP にありました (MYSQL キューを使用)。その後、負荷が増加すると、これは非効率的であることが判明したため、コンシューマーを Java にしました。Java アプリからのキューの MYSQL テーブルのポーリングが非効率的になっていると思います (MYSQL プロセスの CPU 使用率が非常に高くなります)。このキューを実装するより良い方法はありますか (PHP コードと Java アプリの間でメモリを共有するなど)?
c# - PC パターンでコンシューマを一時停止する最も簡単な方法は何ですか?
私は典型的な生産者と消費者のアプリケーションを持っています。生成と消費のメカニズムを提供する BlockingCollection があります。私が必要としているのは、別のスレッドから消費者スレッドの実行を一時停止する機能を追加することです。さまざまな .net 同期プリミティブについて読みましたが、最も簡単な方法で実装する方法を決定できません。
PS: .net 4.0 を使用しています。
c# - リソースを使用した生産者と消費者
リソースのセットを使用してプロデューサー/コンシューマー パターンを実装しようとしているため、各スレッドには 1 つのリソースが関連付けられています。たとえば、各タスクがStreamWriter
その結果を書き込む必要があるタスクのキューがあるとします。各タスクには、パラメーターが渡される必要もあります。
私は Joseph Albahari の実装から始めました (私の修正版については以下を参照してください)。
Action
のキューをリソースのキューAction<T>
に置き換え、T
スレッドに関連付けられたリソースを に渡しますAction
。しかし、これにより、にパラメータを渡す方法の問題が残りますAction
。明らかに、Action
をデリゲートに置き換える必要がありますが、タスクが (ProducerConsumerQueue
クラスの外部から) キューに入れられたときにパラメーターを渡す方法の問題が残ります。これを行う方法についてのアイデアはありますか?
jms - JMS メッセージの消費
以下のシナリオで何が起こるかわかりません。誰かが説明してくれれば非常に助かります。
プロデューサ (P) は、メッセージ M1、M2、M3、M4、M5、M6、M7 を送信します。時刻 T1 から T7 に送信されると仮定します。
ActiveMQ が JMS プロバイダー (AMQ) として使用されていると仮定します。
メッセージ コンシューマ (L) は、トピックにバインドされたリスナーになります。トピック名: jmsTopic
シナリオ 1 :
AMQ は実行中ですが、L は AMQ の jmsTopic に接続されていません。P は M1 から M7 を jmsTopic に送信します。L が時間 T7 よりも大きい時間 T8 で jmsTopic に接続されている場合、L はメッセージ M1 から M7 を受信するか、または時間 T8 以降にトピックに送信されたメッセージのみを受信します。
シナリオ 2: AMQ が実行され、L が接続されて jmsTopic をリッスンし、P が M1 を M4 に送信します。L は M1 から M4 を受信します。その間、L は M1 から M4 を処理し、P は M5 を M7 に送信しますが、L は M4 の処理中にクラッシュします。L が再び jmsTopic に接続した場合、M5 から M7 を受信しますか、それとも L が jmsTopic に接続した後に送信されたメッセージのみが L によって受信されます。
シナリオ 3: AMQ が実行され、L が接続されて jmsTopic をリッスンし、P が M1 を M7 に送信します。ただし、AMQ はクラッシュします。は AMQ ステータスを認識しており、AMQ が起動して実行されると再接続します。
ruby-on-rails - XML / HTTPを介してRailsプッシュ通知サービスコンシューマーを実装するにはどうすればよいですか?
プッシュ通知を受け入れてXMLを解析し、データベースにデータを保存するXMLoverHTTPプッシュ通知コンシューマーを作成しようとしています。きちんとしたXMLパーサーであるのこぎりの宝石を見てきました。私が失敗したのは、アプリのユーザーがアクティビティフィードの受信をサブスクライブしたときにのみ通知を受け入れるように計画していることです。
だから、私はこの形式での通知を期待しています
<?xml version="1.0" encoding="UTF-8"?>
<Activities xmlns="">
<RecordSet>
<Record>
<ACTIVITY_DATE>2011-05-10</ACTIVITY_DATE>
<ACTIVITY_TYPE>FOO</ACTIVITY_TYPE>
<ACCOUNT_ID>0123456789</ACCOUNT_ID>
<SENDER_FIRST_NAME>John</SENDER_FIRST_NAME>
<SENDER_MIDDLE_NAME>S.</SENDER_MIDDLE_NAME>
<SENDER_LAST_NAME>Karanja</SENDER_LAST_NAME>
</Record>
...
</RecordSet>
</Activities>
ステータスコード付きのXMLを通知サーバーに返送することで応答することが期待されています。私はこの例とこれを見てきました
しかし、どちらも私のニーズに対応していないようです。これについてはどうすればよいでしょうか。特に、着信通知のためにパイプを開いたままにする方法はどうでしょうか。そして、これに合わせたそのようなRubygemはありますか?