問題タブ [jms]
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.
java - Javaで非同期キューを継続的に処理するための最良の方法は何ですか?
システムの最後の部分を設計する方法を理解するのに苦労しています。現在、クライアントの要求に応答するサーブレットを備えたTomcatサーバーを実行しています。各リクエストは、非同期キューに処理メッセージを追加します(おそらく、SpringまたはAmazon SQS経由でJMSを使用します)。
イベントのシーケンスは次のとおりです。
送信側:
1。クライアント要求を受け取ります
2.この要求に関連するデータを一意のIDでDBに
追加します3.この要求を表すメッセージオブジェクトをメッセージキューに追加します
受信側:
1。キューから新しいメッセージオブジェクトをプルします
。2。オブジェクトをアンラップし、msgオブジェクトに含まれている情報に基づいてWebサイトからいくつかの情報を取得します。
3.電子メールアラートを送信します
。4。このリクエストの操作が完了したという情報でDB行(同じ一意のID)を更新します。
受信側を適切に処理する方法を理解するのに苦労しています。一方では、キュー内の各アイテムを選択して処理するコマンドラインから開始する単純なJavaプログラムを作成できる可能性があります。安全ですか?そのプログラムをTomcatコンテナ内の別のスレッドとして実行する方が理にかなっていますか?これを連続して実行したくはありません。つまり、受信側は、複数のスレッドを使用して、一度に複数のオブジェクトを処理できる必要があります。私はこれを24時間常に実行したいと思っています。
受信側を構築するためのいくつかのオプションは何ですか?
jms - JMS ロールバック
JMS メッセージの送信を伴うプロセスがあります。このプロセスはトランザクションの一部です。トランザクションの後半部分 (メッセージを送信した前の部分の後の部分) が失敗した場合、メッセージをキャンセルする必要があります。私が考えていたことの 1 つは、メッセージを一定時間ピックアップしないように何らかの方法で設定することでした。ロールバックする必要がある場合は、メッセージをキャンセルすることができます。メッセージを知らないので、そのアイデアが可能かどうかわかりません。または、より良いアイデアはありますか?ありがとう
java - JMS API 経由で MQMD ApplicationID フィールドを設定するには?
JMS API を使用して、メッセージを Websphere MQ サーバーに送信しています。私が作成したメッセージを取得するアプリケーションでは、MQMD 構造体の ApplicationID フィールドを定数値に設定する必要があります。JMS API で MQMD 構造にアクセスする方法が見つかりませんでした
質問: これを行う方法はありますか? はいの場合、どのように?いいえの場合、私の唯一のオプションは、JMS API の代わりに MQ Java API を使用することですか?
java - 非同期呼び出し用の Apache Camel
非同期リクエストに Apache Camel を使用するのは理にかなっていますか? または、JMS サーバーを使用して単純な MoM を使用する必要があります。必要なエンタープライズ統合パターンはありません。
どんな助けでも役に立ちます。
jms - WLIJMSControlの注文単位
クライアントの1つは、注文単位のWeblogicサーバー機能(UOO)を使用することを目的としています。
カスタムUOO名を使用してJMSメッセージを送信するための純粋なJavaコードでUOOを使用すること、およびAqualogic Service BusでプロキシサービスからビジネスサービスにUOO名を伝播すること(両方とも転送プロトコルとしてJMSを使用)にすべてがOKです。
ただし、WeblogicIntegrationでWLIJMSControlとともにUOOを使用すると、正しく機能しません。
このコードを考えてみましょう:
MyCustomProperty
プロパティをJMSコンシューマーに送信しますが、プロパティJMS_BEA_UnitOfOrder
(UOO名に関連)は無視されます。代わりに、デフォルトのユーザー生成UOO名が使用されます。
では、Weblogic JMSControlを使用してUOO名をカスタマイズするにはどうすればよいですか?
java - JMS メッセージングのパフォーマンス: 多数のトピック/キューと広範なフィルタリング (メッセージ セレクター)
JBoss Messaging (JMS) を多用するプロジェクトに取り組んでいます。私は、他の開発者向けに Messaging の使いやすいラッパーを構築する任務を負っており、JMS のメッセージ セレクターを使用してフィルタリング技術を提供し、不要なメッセージの送信を最小限に抑えることを考えています。パフォーマンスに関して誰かが経験を持っているかどうか知りたいですか? 私が恐れているのは、JMS プロバイダーがメッセージ セレクターで行き詰まり、目的全体を事実上無効にしてしまうのではないかということです。ただし、メッセージの種類ごとにトピック/キューの長いリストを作成するよりもはるかに優れています。
最終的には、間違いなくこの 2 つの組み合わせを使用することになりますが、どちらに傾倒しても、パフォーマンスへの影響が懸念されます。
jms - Weblogicの「トランザクションの放棄」警告
WLサーバーで以下のような警告がランダムに表示されます。これらの警告が正確に何であるか、そしてそれらを回避するために何をすべきかをよりよく理解したいと思います。
86,606秒後にトランザクションを破棄:Xid = BEA1-52CE4A8A9B5CD2587CA9(14534444)、Status = Committing、numRepliesOwedMe = 0、numRepliesOwedOthers = 0、beginからの秒数= 86605、残り秒数= 0、XAServerResourceInfo [JMS_goJDBCStore] =(ServerResourceInfo [J state = commitd、assigned = go_server)、xar = JMS_goJDBCStore、re-Registered = true)、XAServerResourceInfo [weblogic.jdbc.wrapper.JTSXAResourceImpl] =(ServerResourceInfo [weblogic.jdbc.wrapper.JTSXAResourceImpl] =(state = new、assigned = none)、xar = weblogic.jdbc.wrapper.JTSXAResourceImpl@1a8fb80,re-Registered = true)、SCInfo [go + go_server] =(state = commitd)、properties =({weblogic.jdbc = t3://10.6.202.37 :18080})、ローカルプロパティ=({weblogic.transaction.recoveredTransaction = true})、OwnerTransactionManager = ServerTM [ServerCoordinatorDescriptor =(CoordinatorURL = go_server + 10.6.202.37:18080 + go + t3 +、XAResources = {JMS_goJDBCStore、weblogic.jdbc.wrapper.JTSXAResourceImpl}、NonXAResources = {})]、CoordinatorURL = go_server + 10.6.202.37:18080 + go + t3 +)
私はBEAの説明を理解しています:
エラー:秒秒後にトランザクションを放棄します:tx
説明:トランザクションが破棄されると、トランザクションの知識は、トランザクションを完了に追いやろうとしていたトランザクションマネージャーから削除されます。JTA構成属性AbandonTimeoutSecondsは、トランザクションマネージャーがトランザクションのコミットまたはロールバックを試行する際に存続する期間を決定します。
原因:AbandonTimeoutSeconds期間中、リソースまたは参加サーバーが使用できなかった可能性があります。
アクション:参加しているリソースでヒューリスティックな完了を確認し、データの不整合を修正してください。
* .tlogファイルを削除することでこれらの警告を取り除くことができることを確認しましたが、これは警告に対処するための適切な戦略ではないようです。
警告は、JMSとJMSストアに関するものです。私たちはJMSを使用しています。なぜトランザクションがぶらぶらしているのか、なぜ「放棄」されるのかがわかりません。
java - Java JMS ResourceAllocationException に関するヘルプが必要
次のエラーが表示されます。
javax.jms.ResourceAllocationException: [C4073]: A JMS destination limit was reached. Too many Subscribers/Receivers for Queue
セットアップは、1 つのプロバイダーと 2 つのコンシューマーが存在するように行われました。このエラーが発生する理由は、それがキューであり、1 つのプロバイダーと 1 つのコンシューマーしか持てないためですか?
java - メッセージリスナーを一時的に無効にする方法
メッセージリスナーを一時的に無効にするための優れた方法は何でしょうか。私が解決したい問題は次のとおりです。
- JMSメッセージがメッセージリスナーによって受信されます
- メッセージを処理しようとするとエラーが発生します。
- システムがメッセージを処理できるように再び準備ができるのを待ちます。
- システムの準備が整うまで、これ以上メッセージは必要ないので...
- ...メッセージリスナーを無効にしたい。
- 私のシステムは再び処理する準備ができています。
- 失敗したメッセージが処理され、JMSメッセージが確認応答されます。
- メッセージリスナーを再度有効にします。
現在、SunAppServerを使用しています。MessageConsumerでメッセージリスナーをnullに設定して無効にし、setMessageListener(myOldMessageListener)を使用して再度有効にしましたが、その後メッセージが表示されなくなりました。
apache-flex - Tomcat/BlazeDS/ActiveMQ 切断の問題
Tomcat/BlazeDS/ActiveMQ スタックで切断が発生しています。BlazeDS StreamingAMFChannel はデフォルトの idle-timeout-minutes 0 で構成されていますが、約 30 分のアイドル時間後にタイムアウトするようです (ログを参照)。その間、クライアントはリクエストを行わず、ActiveMQ トピックからメッセージをプッシュすることもありません。
ActiveMQ と BlazeDS でデバッグ ロギングを有効にすると、BlazeDS がコンシューマを削除していることがわかります。残念ながら、切断メッセージの前にログ メッセージがないため、これが BlazeDS 内でいつ呼び出されたかを実際に追跡することはできません。
他の誰かがこれを経験したことがありますか、または誰かが解決策を提供できますか?
* ActiveMQ ログ *
* BlazeDS ログ *