在java中创建消息ID

Sor*_*tis 3 java uuid

我需要在我的应用中唯一标识消息.因此,每条消息都应包含其id.我有几个问题..

  1. 消息是否应该私有地生成其id并且仅为id提供getter?
  2. 创建ID的最佳方法是什么?java中UUID类的任何替代方法?

谢谢.

Mic*_*rdt 6

  1. 显然,ID不应该有公共设置者.让消息生成ID本身的另一种方法是在构造函数中传递它.
  2. 如果您的应用是分发的,那么UUID就没有其他替代品.如果它没有分发,AtomicInteger或者AtomicLong是可以在没有锁定的情况下巧妙地使用的好的替代方案.

  • "时间戳怎么样?" 消息可以来自多台计算机吗?那你就有可能发生碰撞.即使不是,您也需要确保无法在时间戳的粒度内创建两条消息(例如,如果时间戳低至毫秒,则在同一毫秒期间创建两条消息). (2认同)
  • @Sorantis:不,时间戳太容易碰撞了. (2认同)