2012-04-17 18 views
0

私のアプリケーションで私の要件の1つとしてJMSを使用しています。私は以下のコードを使用してユニークIDを取得しているデータベースに各メッセージ固有のID(実際にはMDB's)を保存します:ユニークなJMSMessageIDの最大サイズ

@Override 
public void onMessage(Message msg) { 
     try { 
      id = msg.getJMSMessageID();    
     } catch (JMSException e1) { 
     } 
} 

上記のコードから私はメッセージ固有のIDを持っていますが、私が知りたいのは、メッセージの最大サイズになるため、それに従ってデータベースを構成する必要があるということです。

私は、WebLogic Serverを使用しています。

答えて

1

JMSメッセージIDの最大長は、JMSプロバイダによって定義されています。

データベースの列に適したサイズを決定するために最低限、プロバイダのマニュアルを参照する必要があります。より移植性の高いソリューションを実現するには、かなり大きな値に設定する必要があります。つまり、JMS実装をベンダーに依存させずに、列のサイズを指定する必要があります。

私はあなたがそれを避けることができれば、ほとんどのポータブルソリューションのためにあなたは、まったくJMSメッセージIDを保存するべきではないと言うでしょう。あなたはいつも、あなたの目的のために正しい列の長さを定義することができるようになる代わりに、メッセージやストアの独自のIDを生成することができます。

+0

実際には、データベースにメッセージIDを格納しているためにプロセスが完了したときに、その特定のメッセージのデータベースを更新したいと思います。独自のIDを作成するように提案しても、Message.setJMSMessageID XX)を呼び出し、そのIDをMessage.getJMSMessageID()を呼び出してMDBクラスで使用しますか? – Ran

+0

は、このIDに依存している他のシステムと通信する必要がありますか?あるいは何とかIDを他の場所に記録していますか?そうでない場合は、メッセージの独自のIDを保存してから、処理フェーズ全体でそれを使用することができます。 – Perception