私はSnowcast https://github.com/noctarius/snowcastを自分のアプリケーションのユニークなIDジェネレータとして使用します。これらのIDをWebアプリケーションのURLに公開します。Hazelcast Snowcastシーケンスジェネレータのエポックとイドの長さ
今、私は私の春のブートアプリケーションでSnowcastシーケンサを設定するには、どのように2つのオプションがあります。Calendar
基づきエポックの場合のsnowcastSequencer.next()
メソッド呼び出しの結果として
@Bean
public SnowcastSequencer snowcastSequencer(Snowcast snowcast) {
Calendar calendar = GregorianCalendar.getInstance();
calendar.set(2017, Calendar.FEBRUARY, 1, 0, 0);
SnowcastEpoch snowcastEpoch = SnowcastEpoch.byTimestamp(calendar.getTimeInMillis());
return snowcast.createSequencer("sequence_generator", snowcastEpoch);
}
または
@Bean
public SnowcastSequencer snowcastSequencer(Snowcast snowcast){
SnowcastEpoch snowcastEpoch = SnowcastEpoch.byTimestamp(new Date().getTime());
return snowcast.createSequencer("sequence_generator", snowcastEpoch);
}
を私は次の長い値を得ています:
15617925960433665
しかしDate
基づきエポックの場合:
12046041089
私は2番目のいずれかのよう...短いのIDでもっと興味が、私はIDが可能一意性の問題を心配します。
ユニークなIDの場合は、Dateに基づいてエポックを使用してもよろしいですか?
あなたの答えをありがとう!今私は考えなければならないか、または私のURLに負の値を持つことは大丈夫です。 – alexanoid
負の値の生成を避ける方法はありますか?私の解は負の値を受け入れることができません(( – alexanoid
いいえ、申し訳ありませんが、最上位ビットはエポックミリ秒に使用されるため、常に負の値を持つ可能性があります)。 – noctarius