在整个应用程序生命周期

时间:2013-06-12 22:04:58

标签: java

我正在开发一个jboss Java EE应用程序,我需要通过消息传递系统(JMS或AMQP可选)发送消息。约。每秒将有大约10k到15k的消息。要求是为过去任何时候都没有使用的每个外发消息生成一个唯一的id,即使在应用程序重启之后,即id不应该在应用程序生命周期内再次重复(从应用程序使用的第1天到退役)

我更喜欢基于

的解决方案
  1. 仅限数值(什么数据类型?)
  2. 字符串
  3. id的自动生成应该是原子的。

3 个答案:

答案 0 :(得分:6)

Java提供了一种在Universally Unique Identifiers

中生成UUID class的方法

维基百科解释了为什么这些生成具有相同ID的消息的概率可以忽略不计。

答案 1 :(得分:3)

我倾向于喜欢UUID,特别是因为您可以轻松地从不同的来源创建它们。但你也可以使用一个长(64位)整数。每秒15k消息,您将获得大约3900万年的唯一数字(如果您希望它们大于零,则为一半)。

答案 2 :(得分: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

或自己运行。