根据Minion:
my $id = $minion->enqueue(foo => [@args]);
是否可以使用自定义 ID?例如:
my $id = Data::UUID->new->create_str;
$self->minion->enqueue(foo => [@args] => {id => $id});
LinkCheck
示例,我不希望用户看到“其他”用户的 URL,因为 id
很容易猜到。
不是真的。
enqueue
从 Minion::Backend::Pg::enqueue
获取 ID,它本身通过执行以 RETURNING id
结尾的 SQL 插入查询获取 ID,这意味着 enqueue
返回的 ID 是插入行的 ID进入数据库。
相反,您可以使用哈希将
enqueue
返回的 ID 映射到 Data::UUID
生成的 GUID。像这样的东西:
my $internal_id = $minion->enqueue(foo => [@args]);
my $external_id = Data::UUID->new->create_str;
$self->extern_to_intern_map{$external_id} = $internal_id;
(请注意,
extern_to_intern_map
会增长而不会收缩;如果您的应用程序运行了很长时间,您可能想要显式delete
旧映射)