由于我们在ruby中具有多线程环境,因此需要基于相同的输入字符串JOB_userId_jobId(如JOb_1_90),每次生成相同的UUID(如9f54c0ae-f9cf-46ba-985d-637e1dcc0e5d)。
示例:
"JOb_1_96"=>"412ce9ff-fb47-4b8e-94c9-4bd37481cb4b",
"JOb_1_97"=>"7232e1d6-422e-4d49-a47f-f4628e4ffd57",
"JOb_1_98"=>"de932dbd-76e4-4828-8bc1-cebd8254db61",
"JOb_1_99"=>"ce1e91a3-8d5d-47f8-9dc6-58790cbb98e9",
....
任何帮助将不胜感激。
答案 0 :(得分:0)
据我了解,UUID不应是随机的,而应基于输入字符串。这称为“版本3”和“版本5” UUID。这些版本因使用的哈希函数不同而不同:MD5与SHA1。参见rfc4122, section 4.3。
如果您不介意将Activesupport依赖项包含到您的项目中(它是一个很大的宝石,但是很流行并且包含在Rails中),则可以使用其uuid_v3
和uuid_v5
methods
require "active_support/core_ext/digest/uuid"
puts Digest::UUID.uuid_v3("ae279f4c-6327-47c6-b53c-05a3f10dd0c6", "bar")
puts Digest::UUID.uuid_v5("ae279f4c-6327-47c6-b53c-05a3f10dd0c6", "bar")
输出(请注意,每次运行都相同,与随机UUID不同):
fab2e5c9-bf64-39d4-bc17-e72ccdb013aa
15c252d7-fd16-52de-aac2-223a58aa6ea9