2

メッセージング システム (JMS または AMQP オプション) を介してメッセージを送信する必要がある jboss Java EE アプリケーションを開発しています。約。1 秒あたり約 10k から 15k のメッセージがあります。要件は、アプリケーションの再起動後でも、過去に使用されていない送信メッセージごとに一意の ID を生成することです。つまり、ID は、アプリケーションの有効期間中 (アプリケーション使用の 1 日目から廃止されるまで) 繰り返されるべきではありません。

に基づいたソリューションを優先します

  1. 数値のみ (データ型は?)

ID の自動生成はアトミックである必要があります。

4

3 に答える 3

6

Java は、UUID クラスでUniversally Unique Identifiersを生成する方法を提供します

ウィキペディアには、これらが同じ ID を持つメッセージを生成する確率が無視できる理由が説明されています。

于 2013-06-12T22:08:38.900 に答える
3

特に、さまざまなソースから簡単に作成できるため、UUID が好きです。しかし、長い (64 ビット) 整数を使用することもできます。1 秒あたり 15,000 メッセージの場合、約 3,900 万年分の一意の数値が得られます (数値を 0 より大きくしたい場合は、その半分になります)。

于 2013-06-12T22:14:44.053 に答える
0

高速でシンプルな方法を探している場合は、UIDGenerator.javaを参照してください。

あなたはそれをカスタマイズすることができます(プロセスのみ、または世界に固有)、使いやすく高速です:

    private static final UIDGenerator SCA_GEN = new UIDGenerator(new ScalableSequence(0, 100));
.......
    SCA_GEN.next();

私のベンチマーク結果を参照してください:

http://zoltran.com/roller/zoltran/entry/generating_a_unique_id

または自分で実行します。

于 2014-10-26T17:57:51.370 に答える