我正在开发一个jboss Java EE应用程序,我需要通过消息传递系统(JMS或AMQP可选)发送消息。约。每秒将有大约10k到15k的消息。要求是为过去任何时候都没有使用的每个外发消息生成一个唯一的id,即使在应用程序重启之后,即id不应该在应用程序生命周期内再次重复(从应用程序使用的第1天到退役)
我更喜欢基于
的解决方案id的自动生成应该是原子的。
答案 0 :(得分:6)
答案 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
或自己运行。