2011-08-11 3 views
0

GlassFishからOpenMQを使用してログします。私は自分のコンポーネントがこのキューにメッセージを置くことができると思っています。ただ1つのmdbしか消費しない場合は、すべてのメッセージをキューに入れられた順序で受信できるはずです。これは動作しますか? メッセージの順序を保持する方法はありますか?複数のパブリッシャと1台の受信者を使用してOpenMQでメッセージの順序を保持できますか?

プレゼンテーションにスライドがあり、元々私にはJMSが注文を提供したと信じていましたが、明らかに誤解を招いています。スライド8の

トランスクリプト:

JMSは何ですか? •メッセージ指向ミドルウェア用のJavaベースのAPI。 •それは>メッセージの順序は >サポートされているメッセージが 送っ>トランザクション(メッセージのグループ化が送られるか、または一緒に 生成されるように)されたときに、信頼性のレベルが決定される>保証フォーマットのである(特に)次の概念を使用し メッセージは プロデューサによって定義されます。2種類のメッセージ配信(ポイントツーポイントおよび パブリッシュ/サブスクライブ)を提供します。Copyright Sun Microsystems Inc. All Rights 予約済み。 [8]

http://www.slideshare.net/alexismp/openmq-aquarium-paris-presentation

を以下これらの回答は、JMS構造が順序を保証するものではありませんことを知らせます。しかし、コンテナの並行性を使用するシングルトンであるMDBを1つだけ持っていれば、少なくともエンキューオーダーを楽しむことができます。

参照:

+0

なぜこれがダウングレードされているのか分かりません。私はjmsを初めて使用しており、このレスポンスを決定する可能性が高いです。同じ質問はないようです。私は改訂する必要がありますか? – simgineer

答えて

1

私はキュー自体に順序を保証する心配はありません。あなたのメッセージのペイロードにタイムスタンプフィールドを含め、その事実を並べ替えてください。これは、トラフィックが非常に多い状況で余分なデータが受け入れられない場合にのみ問題になりますが、そのような場合には、一時的にローカルロギングに戻すことは意味があります。

追加のフィールドを使用すると、コンポーネントがキューとの接続を失った場合でも、1時間前に配信される予定のメッセージには、正しいMDBを作成するときに正しい時刻と「順序」が設定されます。

+0

答えのような音はいいえです。フィードバックをお寄せいただきありがとうございます。 – simgineer