問題タブ [event-bus]
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.
guava - Guava が「 > 注釈付きメソッドのイベントハンドラーがありません」というエラーを発行するのはなぜですか?
登録を解除しようとすると、クラスの 1 つで次のエラーが発生します。
java.lang.IllegalArgumentException: 注釈付きメソッドのイベント ハンドラーがありません。[DerivedClass] は登録されていますか?" at com.google.common.eventbus.EventBus.unregister(EventBus.java:227)
クラスの呼び出しunregister(this)
には、パブリック@Subscribe
アノテーション付きメソッドがあります。
multithreading - Scala : Akka - アクターシステム用の複数のイベントバスまたは優先イベントがありますか?
eventStream への複数のサブスクライバーを持つ単一の ActorSystem があります。アプリケーションは毎秒数千のメッセージを生成する可能性があり、一部のメッセージは残りのメッセージよりも重要です。したがって、それらはすべての前に処理する必要があります。
すべての ActorSystem には単一の eventStream が添付されていることがわかりました。そのため、専用の eventStream で重要なメッセージを受信するには、同じアクター クラスを 2 つ (またはそれ以上) の ActorSystems に登録する必要があるようです。
これは好ましいアプローチですか、それともこのタスクにはいくつかのトリックがありますか? 分類子は、メッセージの優先度を微調整することもできますか?
java - 異なる Web アプリケーションで EventBus とイベントを共有するにはどうすればよいですか?
私はトムキャットを使用しています。グアバ jar と自分の jar を tomcat/lib に入れたい。私のjarにはイベントバスを取得するためのファクトリがあり、すべてのWebアプリケーションがそのファクトリにアクセスできます。webapp1 にリスナーを登録し、webapp2 からイベントを投稿する方法がわかりません。私が webapp2 で使用しているオブジェクトは webapp1 には存在しません。文字列、文字列のマップなどの Java オブジェクトのみを共有できますが、他の webapp のオブジェクトは共有できません。
いくつかのアイデア?
gwt - GWT: 挿入された PlaceManager が null です
以下のコードではPlaceManager
、4 行目にa を挿入placeManager.revealPlace()
し、最後の行で the を使用しようとしています。ただし、その時点で null 例外が発生します。
さらに、その行の前に a を追加するif(placeManager==null){ Window.alert("Hello"); }
と、アラートが表示されます。
なぜこれが起こっているのですか?おそらくFieldUpdater
ハンドラー内で実行されるためでしょうか?
ありがとう
gwt - GWT アクティビティ : アクティビティ、場所、イベントバス、uibinder の使用方法
私は GWT の初心者で、Activity、Place、EventBus、および UIbinder の使用方法について疑問に思っています。私のアプリのレイアウトは次のようになります。
ウィジェット 1:
ここで「widget1.headerPanel」には、「widget1.centerPanel」に表示されるウィジェットを制御するナビゲーションがあります。「widget1.centerPanel」に表示する必要があるウィジェットは、「widget2.0」と「widget2.1」です。
ウィジェット2.0
ウィジェット2.1
「widget2.0.topPanel」には、「widget2.0.centerPanel」に表示されるウィジェットを制御するナビゲーションがあります「widget2.centerPanel」に表示する必要があるウィジェットは「widget3.0」と「widget3.1」です」。
Widget3.0
ウィジェット3.1
私の質問は、「onPlaceChangeEvent」を処理する方法ですか?
たとえば、url が mydomain.com/myapp.html#home:content1
の場合、アプリはウィジェット 1、ウィジェット 2.0、およびウィジェット 3.0 を表示する必要があります。
URL が mydomain.com/myapp.html#home:content2
の場合、アプリは widget1、widget 2.0、widget 3.1 を表示する必要があります。
URL が mydomain.com/myapp.html#settings
の場合、アプリは widget1 と widget 2.1 を表示する必要があります
私は2つのバリアントの間で疑問に思っています:
- 2 つの ActivityManager を作成します。1 つは widget1.navigation のアクティビティ用で、もう 1 つは widget2.navigation のアクティビティ用です。しかし、widget2 が widget1 の前に作成された場合はどうなるでしょうか?
- カップル ビューを作成する 1 つのアクティビティを作成します。
コード:例
この場合のベストプラクティスは何ですか?
distributed - クラスター化された分散型のイベント バス ライブラリを構築するのに役立つライブラリはありますか?
クラスター化された (つまり、分散された) イベント バスを構築できる Java ライブラリはありますか?
ZeroMQ/RabbitMQ/Redis のような外部の pub/sub サービスに依存することについて話しているのではなく、内部ですべてを行う Java ライブラリ (つまり、他のマシンへの接続の維持、データの同期、ダウンタイムの管理など) について話しているのです。
ありがとう
gwt - 異なるプロジェクトまたはアプリケーション間の通信にイベント バスを使用できますか
内部使用のために gwt ウィジェット ライブラリを作成しています。gwt ウィジェットのいずれかのコントロールでイベントが発生するたびに、イベントを発生させるように求められます。これは、ウィジェットを使用しているアプリケーションまたはプロジェクトによってリッスンされます。この概念は、同じページの異なる領域に表示される異なるビュー間で通信するために、以前に他の gwt プロジェクトで使用したイベント バスに似ているように見えました。アプリケーション全体でイベントバスの同じインスタンスを使用していたので、うまくいきました。しかし今、私は自分のプロジェクトでイベント バスの特定のインスタンスを使用していますが、それを使用するアプリケーションは同じインスタンスを使用していません。先に進んでそれを使用しますか、それとも異なるアプリケーション間でイベントを発生させる別の方法がありますか? 助けてください
java - GWT-MVPイベントバス。複数のハンドラーが作成されます
継承した大規模なアプリケーションで作業しており、いくつかのベストプラクティスの問題が発生しています。
ユーザーがカスタマー編集ページに移動するたびに、新しいプレゼンターが作成され、ビューが設定されます。顧客編集用のメインプレゼンターとメインビューがあります。メインプレゼンターのサブプレゼンターが使用するサブビューもメインビュー内にあります。サブプレゼンター内で、イベントバスにイベントハンドラーを登録します。
私が抱えている問題は、連絡先エディターに2回移動すると、プレゼンターが再度作成され、それらのイベントが再度登録されることです。これで、イベントが発生すると、プレゼンターインスタンスごとに1回ずつ、2回処理されます。
プレゼンターは変数によって保持されませんが、サブビューはメインビューによって参照されます。ビュー内のこの参照が、イベントハンドラーの削除を妨げている可能性がありますか?そのオブジェクトがガベージコレクションされた場合、イベントハンドラーが削除されるという印象を受けました。そうでない場合は、これらのイベントハンドラーをイベントバスから登録解除する必要がありますか?
更新:プレゼンターはガベージコレクションされていません。コードを変更して、それらのプレゼンターへのすべての参照が不要になったときにそれらを削除できる場合、それらは収集されるので、イベントハンドラーは削除されますか?
java - Spring IoC を使用して Guava EventBus に Bean を自動的に登録する
アプリケーションに言語変更イベントのインターフェースがあるとします (Vaadin に基づいています)。
そして、@Component で注釈が付けられたこのインターフェースを実装する多くの Bean があるため、Spring IoC で使用できます。EventBus Bean もあります。
ここで、IoC から任意の Bean のインスタンスを取得した後、languageSwitcher のインスタンスも取得し、新しく作成された Bean を次のように登録する必要があります。
このイベントを受け取るために。IoC に、ILanguageChangeListener を実装するすべての新しい Bean で languageSwitcher Bean の register メソッドを呼び出したいと伝えることは可能ですか?
android - Androidでのgreenrobot EventBusポストイベント
EventBus を使用して、Android の Activity にイベント (MyEvent) を投稿し、別の Activity でイベントを受信する必要があります。greenrobot EventBus パフォーマンス テスト プロジェクトを試しましたが、その方法がわかりませんでした。
ActivitySubscriberでやってみた
ActivityReceiverでイベントを次のように受信しようとしました
しかし、私はイベントを受け取ることができません。誰が私がどこで間違っているのか教えてもらえますか?