Perl Mojolicious minion->使用自定义 id 排队

问题描述 投票:0回答:1

根据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
很容易猜到。

perl queue uuid mojolicious minion
1个回答
1
投票

不是真的。

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
旧映射)

© www.soinside.com 2019 - 2024. All rights reserved.