問題タブ [publish-subscribe]
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.
python - 推奨されるPythonのパブリッシュ/サブスクライブ/ディスパッチモジュール?
PyPubSubから:
Pypubsubは、Pythonアプリケーションがそのコンポーネントを分離するための簡単な方法を提供します。アプリケーションの一部は(データの有無にかかわらず)メッセージを公開でき、他の部分はメッセージをサブスクライブ/受信できます。これにより、メッセージ「送信者」とメッセージ「リスナー」がお互いに気付かないようになります。
- 一方はもう一方をインポートする必要はありません
- 送信者は知る必要はありません
- 「誰が」メッセージを受け取る、
- リスナーがデータをどのように処理するか、
- または、リスナーがメッセージデータを取得する場合でも。
- 同様に、リスナーはメッセージの送信元について心配する必要はありません。
これは、Model-View-Controllerアーキテクチャー、またはそのコンポーネントの分離を促進する同様のアーキテクチャーを実装するための優れたツールです。
PyPubSubからPyDispatcher 、単純な「家庭料理」クラスまで、Web上でフローティングを公開/サブスクライブするためのPythonモジュールがかなりあるようです。
異なるモジュールを比較する場合、特定の長所と短所はありますか?どのモジュールのセットがベンチマークされ、比較されましたか?
前もって感謝します
opensocial - pubsub は OpenSocial でどのように機能しますか?
OpenSocial APIに基づいてアプリケーションを設計しようとしていますが、 pubsub装置がどのように機能するかわかりません。これは、Unix パイプ、またはおそらく RSS フィードに似ているようです。
チャネルはブラウザーやコンピューター間で永続的ですか? つまり、ブラウザ A でチャネル "x" を購読し、ブラウザ B で "x" に公開し、このデータをブラウザ A で読み取らせることはできますか? そうでない場合、同じことを達成するための便利なオープンソーシャルの方法はありますか?
また、データが公開された後に 1 つのガジェットがチャネルにサブスクライブした場合、そのデータを読み取ることはできますか?
winforms - カスタム パブリッシュ/サブスクライブ イベンティングと、Winforms でのビルド イット .Net イベンティング
動的 UI Winform 設計の要件を満たすために、独自のパブリッシュ サブスクライブ イベントを設計および実装する必要がありました。私が比較して改善できる pub/sub をサポートする .Net ライブラリはありますか?
c++ - パブリッシュ/サブスクライブとスマートポインター
単純なパブリッシュ/サブスクライブパターンを実装したいと思います。
単一のパブリッシャーは、そのサブスクライバーにトークン(オブジェクトへのポインター)を公開します。パブリッシャーとサブスクライバーはすべて独立したスレッドです。サブスクライバーがトークンを処理している間、パブリッシャーがトークンをサブスクライバーに配布し続けることができるように、各サブスクライバーにスレッドセーフキューを追加する予定です。
ご覧のとおり、これはすべてのサブスクライバーが実際に同じポインターを共有していることを意味します(注:サブスクライバーはとにかくポイントされたオブジェクトを変更できないため、問題はありません)。共有ポインターがどのサブスクライバーによっても使用されなくなったら、最後のサブスクライバースレッドが使用された後、ポインターがそれ自体を自動削除できると非常に便利です。
これはスマートポインタを使用するのに適した場所ですか?もしそうなら、私はどのスマートポインタを使うべきですか?
私はMSVC2008を使用してWindowsで開発し、Intel TBB、Boost、およびQtを使用しています。
wcf - WCFデュプレックスチャネルを介した長期的なコールバック契約-代替のデザインパターン?
レーダーガンからの速度測定値をデータベースに記録するWindowsサービスがあります。さらに、このサービスをWCFサーバーにしました。私は、サービスにサブスクライブし、特定の基準を満たす読み取り値があるたびにコールバックされるフォームとCFクライアントを持っています。
これは原則として機能しますが、しばらくするとチャネルがタイムアウトします。長時間実行される接続( http://blogs.msdn.com/drnick/archive/2007/11/05/custom-transport-retry-logic.aspxを参照)と二重HTTPコールバックにはいくつかの基本的な問題があるようです。 正しい解決策ではないかもしれません。WCFでパブリッシュ/サブスクライブパターンを実現する他の方法はありますか?
編集:2時間のタイムアウトがあっても、チャネルは最終的に危険にさらされます。このエラーが発生します:
セッションフルチャネルがメッセージの受信を待機してタイムアウトしたため、操作'SignalSpeedData'を完了できませんでした。タイムアウトを増やすには、構成ファイルのバインディングにreceiveTimeoutプロパティを設定するか、バインディングに直接ReceiveTimeoutプロパティを設定します。
これは、最後に成功した呼び出しの15分後に発生しました。セッションを開いたままにする代わりに、呼び出しごとに新しいセッションを再確立できるかどうか疑問に思っています。
replication - サブスクライバー データベースからパブリッシャー データベースへ
トランザクション レプリケーション データベースのパブリッシャー側が何らかの理由でバックアップと共にダウンした場合、最小限の影響と時間で、サブスクライバー データベースをパブリッシャーとして再び作成するにはどうすればよいでしょうか。
この時点で私が理解しているように、サブスクライバー データベースには、レプリケーションに必要なトリガーとビューがロードされています。
TIAゴパール
architecture - アーキテクチャ パターン Pub/Sub スケーリングとディザスタ リカバリ
JMS 準拠の pub/sub インフラストラクチャを介してメッセージをブロードキャストするソース システムを用意します。パブリッシュされたメッセージの大部分では、サブスクライバーは、メッセージ内のデータで画面を更新する GUI アプリケーションになります。
ただし、サブスクライバーの 1 つは翻訳サービスになります。公開された特定のメッセージについては、翻訳サービスがメッセージを別の形式に変換し、企業の別の部門が所有するセカンダリ メッセージング インフラストラクチャに公開します。
翻訳サービスをスケールアウトして、理想的にはアクティブ-アクティブ フォールト トレランスを提供するにはどうすればよいですか? いくつかのメモ:
- メッセージは、セカンダリ メッセージング インフラストラクチャに順番に公開する必要があります。
- メッセージは、セカンダリ メッセージング インフラストラクチャに一度だけ公開する必要があります。
基本的に、1 人の翻訳サービス加入者だけがメッセージに応答するようにするにはどうすればよいですか? キューベースのシステムに切り替える必要がありますか (ただし、GUI には引き続き pub/sub セマンティクスが必要です)?
翻訳サービスは、Windows Server 2003 でホストされる .Net 3.5 アプリケーションに賭けることに注意してください。F5 Network の BigIP LTM/GTM が利用可能です。
詳細が必要な場合は、質問/コメントしてください。
前もって感謝します。
c#-3.0 - C#3.0 の Pub-/Sub-Scenarios で Co-/Contravariance をサポートする必要がありますか?
私のアプリケーションでは、サブスクライバーを登録するための何かを提供する単純なイベント ハブを作成しています。
そして出版イベント。
とてもシンプルです。Publish<int>(0)
を実装しているすべてのサブスクライバーにルーティングしたいISubscriber<int>
。
それほど難しくないのは、サブスクライバーの EventType を反変にすることです。したがって、ISubscriber<object>
基本的にすべてを消費する必要があります。値型も消費してほしいかどうかはわかりません。
C#4 では問題ありませんが、今は C#3 でこのようなことを行っており、インターフェイスで反変性を偽装しています。
さて、このように「イベント型」にデータを詰め込みたいと思います。そのイベントのジェネリック パラメーターは、共変でなければなりません。
パブリッシュするとPublish<DataChanged<B>>(new DataChanged<B>(new B())
(指定された B : A)、Subscriber にはDataChanged<A>
、データがどこに渡された B インスタンスであるかが通知されますDataChanged<B>
。したがって、共分散のサポートも必要です。
次のように、Co-/And Contravariance の両方をサポートするライブラリを作成することを考えました。
次のような変換(キャストではありません!)が可能になります:
どう思いますか?出来ますか?動的プロキシを使用してそれを行うことを考えました。
.net - .NET からアクセスできる永続サブスクライバを実装するには、どのテクノロジを使用すればよいですか?
グリーン フィールド プロジェクトを想定すると、どのテクノロジ、ライブラリ、ミドルウェアなどを選択すれば、Windows と .NET で永続的なサブスクリプションを使用してパブリッシュ/サブスクライブ メッセージングを実装するのが最も簡単になりますか? Google を使用して WCF Peer Channel を見つけました。これは、必要なことのほとんどを行っているようですが、メッセージの順序を保証するものではなく、信頼性のためにメッセージをディスクに保持するものではないと思います。マイクロソフトは、これらの機能を上に重ねることができると言っていますが、私はそれらの機能を既に備えているものを探していました。
MSMQ 配布リストは私が望むものに近いものですが、メッセージング レイヤーが事前にすべてのクライアントについて知る必要がないものが望ましいです。
加入者数は多くなく、おそらく 20 人未満です。
パブリッシャーとサブスクライバーの両方が C#/.NET で実装され、Windows 上で実行されます。
編集: メッセージ指向のミドルウェアとサービス バスの提案を検討しています。私はこの分野のエンタープライズ向けの製品に精通しており、シンプルで軽量なものを本当に探しています。各製品を見るには少し時間がかかりますが、調査結果をまとめてみます。