我有一个有状态的服务结构服务,需要调用第三方API。当它调用API时,它必须提供long类型的唯一ID。在有状态服务中有没有办法获得下一个可用的Long,而没有其他服务实例也会创建相同的ID?
答案 0 :(得分:1)
如果允许重复使用,则可以使用服务实例的哈希码,同一调用者不会同时使用第三方资源。
您可以使用RandomNumberGenerator生成8个随机字节,并使用BitConverter将它们转换为long,以获得相当不错的随机long值。 无法保证两个随机数永远不会相同。 使用8个字节时,机会非常好。
您可以创建一个Actor或Service来跟踪当前正在使用的长值(或者曾经使用过 - 如果需要的话)。让它按需分配新的长值。