セッションが作成されたConnectionオブジェクトがスレッドセーフ(スレッドごとに共有)されている場合、セッションオブジェクトを同時スレッドで使用できないようにJMS仕様が設計されているのはなぜですか?JMSセッションオブジェクトがスレッドセーフではないのはなぜですか?
5
A
答えて
5
JMSセッションオブジェクトは、通常、トランザクションに使用されます。また、トランザクションはスレッド固有であり、スレッド間にまたがることはできません。したがって、トランザクションされたJMSセッションはスレッド間で使用できません。この理由から、JMS仕様では、セッションはスレッドセーフではないと言います。
5
JMS 2.0仕様
25ページ
セッションへの同時アクセスを制限するための2つの理由があります。
最初に、セッションはトランザクションをサポートするJMSエンティティです。 マルチスレッドのトランザクションを実装することは非常に困難です。
第2に、セッションは非同期メッセージ消費をサポートします。 JMSは、非同期のメッセージの消費に使用されるクライアントコードが複数のメッセージを同時に処理できることをJMSが要求していないことが重要です。 メッセージ。また
セッションが複数、 非同期コンシューマで設定されている場合、クライアントがこれらの別々の消費者が同時に 実行している場合を扱うために を余儀なくされていないことが重要です。これらの制限により、標準の クライアントではJMSを使いやすくしています。より洗練されたクライアントは、複数のセッションを使用してそれらの同時性を得ることができます。 従来のAPIと ドメイン固有のAPIでは、これは複数のセッションオブジェクトを使用することを意味します。 簡略化したAPIでは、複数のJMSContextオブジェクトを使用することを意味します。
関連する問題
- 1. このコードはスレッドセーフではないのはなぜですか?
- 2. 読み取りがスレッドセーフではないのはなぜですか?
- 3. C++なぜ私の日付解析がスレッドセーフではないのですか?
- 4. シングルプロデューサのシングルコンシューマサーキュラキューは、ロックされていないスレッドセーフなのはなぜですか?
- 5. この静的Javaメソッドはスレッドセーフではないのはなぜですか?
- 6. は、スレッドセーフなjavax.sql.DataSourceですか?
- 7. std :: queue :: empty()がスレッドセーフではないのはなぜですか?関数をスレッドセーフにするべきではありませんか?
- 8. なぜC#のPythonラムダ式をスレッドセーフではないと呼びますか?
- 9. List <T>はスレッドセーフではないのはなぜですか?以下のサイトから
- 10. なぜReadOnlyDictionaryはスレッドセーフではありませんか?
- 11. PHPスレッドセーフでWindows用でないスレッドセーフ
- 12. このシナリオでは、どのスレッドセーフなコレクションが適切ですか?
- 13. いっぱいになったJMSキュー(約50.000メッセージ)の処理が、満たされたJMSキューの処理よりも遅いのはなぜですか?
- 14. これはスレッドセーフなコードですか?
- 15. スレッドセーフな方法はV4L2ですか?
- 16. これはスレッドセーフなコードですか?
- 17. java.lang.Thread自体はスレッドセーフなクラスですか?
- 18. スレッドセーフなByteArrayOutputStreamとは何ですか?
- 19. unsafeBitCastがコンパイラエラーではないのはなぜですか?
- 20. java.util.Map.get(...)が汎用ではないのはなぜですか?
- 21. PERSONがrefクラスではないのはなぜですか?
- 22. チェーンされたスレッドセーフなコレクションはスレッドセーフですか?
- 23. スレッドセーフでないPythonコードの例は何ですか?
- 24. 配列にスレッドセーフではない
- 25. MouseMovedでオブジェクトが動かないのはなぜですか?
- 26. Linuxではfopen()がスレッドセーフな機能ですか?
- 27. GrailsのJMSメッセージが古くなったデータを使ってサービスを処理するのはなぜですか?
- 28. マルチスレッドの代わりにメッセージング(JMSなど)はいつですか?
- 29. この静的な最終変数は、単一スレッドセーフではなぜですか?このサイトを読ん
- 30. 私のアプリケーションアイコンが透明でないのはなぜですか?
興味深い説明+1 –