0
私はブローカートピックを持ち、複数のデフォルトのメッセージリスナーまたは単純なメッセージリスナーを持つ予定です。すべてのリスナーが同じコードを実行します。複数のリスナーは同じコードで動作できますか?
- 各リスナーコードは別のコード実行と独立していますか。私が尋ねようとしていることは、同じメソッドにアクセスするときにリスナー間で矛盾が生じるかどうかです。
私はマルチスレッド実行のように動作します。 私はブローカーとしてJMSとactivemqを使用しています。
理解するコード: 各リスナーは、このメソッドをイベント送信の「イベント処理」と呼びます。このメソッドは、他のメソッドを呼び出します。 handleメソッドは、他のメソッドを呼び出します。
private void eventProcessing(final Event Event){
try {
if(Event.isDatafileTransaction()){
final EventDatafileTransaction datafileTransaction = Event.getDatafileTransaction();
final List<Events> transactions = getDatafileTransactions(datafileTransaction);
final List<AcEventRecordOperation> recordOperations = getTransactionsAsListOfRecordOperations(datafileTransaction, transactions);
if (recordOperations != null && recordOperations.size() > 0) {
recordOperationListener.handle(recordOperations);
}
}
} catch (Throwable t) {
}
}
詳細なコードスニペットがなければわかりにくいですが、基本的なマルチスレッドと並行性は引き続き適用されます。 eventProcessingメソッドがクラス上にあり、複数のリスナーから呼び出され、各リスナーによって渡されるEventオブジェクトが個々のリスナーに対して一意であるとすれば、ここではスレッドセーフです –