2010-03-01 72 views
2

我需要在我的应用程序中唯一标识消息。因此每条消息应该包含它的id。我有几个问题虽然..在java中创建消息ID

  1. 应该消息私人生成它的id,只提供ID为getter?
  2. 什么是创建ID的最佳方式?在Java中的UUID类的任何替代品?

谢谢。

回答

6
  1. 显然,ID应该有一个公共的制定者。让消息生成ID本身的另一种方法是在构造函数中传递它。
  2. 如果您的应用程序是分布式的,那么没有真正的UUID替代方案。如果没有分配,AtomicIntegerAtomicLong是可以不用锁定就可以正确使用的好选择。
+0

我的应用程序已分发。坦率地说,消息应该自己生成id。 时间戳怎么样?带有时间戳的 – Sorantis 2010-03-01 12:30:27

+0

:您会发现处理时钟同步问题更困难IMO ... – jldupont 2010-03-01 12:31:44

+2

“时间戳怎么样?”消息是否可以源自多台计算机?那么你有可能发生碰撞。即使没有,也需要确保在时间戳的粒度内不能创建两条消息(例如,如果时间戳为毫秒,则在同一毫秒内创建两条消息)。 – Kris 2010-03-01 12:32:57

2

没有更多的上下文我会回答:如果您关心速度,您可以始终有一个进程(在另一台机器上?)预先计算应用程序的UUID。这样,应用程序就可以快速访问UUID的“池”。

  1. 一个不应该能够改变消息的UID或者是什么意思?

  2. UUID类有什么问题?如果是关于速度,那么请参阅上文。