如何在Perl中设置要处理的消息?

时间:2009-06-10 15:50:19

标签: mysql perl

服务器在Perl中处理邮件的最佳方式是什么?

我正在尝试

while ( 1 ) {
  # Get Queue Messages
  # Do Work
  sleep( 10 );
}

我的mysql架构是排序

create table message (
  id int auto_increment primary key,
  processed int,
  message varchar(100)
)

在我的“#Get Queue Messages”中,我发出了像

这样的请求
select * from message where processed = 0

然后在完成后翻转标志。

有更好的方法吗?

2 个答案:

答案 0 :(得分:2)

听起来像我真正想要的是作业队列,例如GearmanTheSchwartz

答案 1 :(得分:1)

嗯,这取决于这些'消息'是什么以及您想要走多远。在很多情况下,你正在做的事情可能就好了。

但是,如果您在服务器与其客户端之间使用此机制进行大量进程间通信流量,则可能正在提交'database-as-IPC anti-pattern'的实例。这基本上意味着使用数据库在进程之间进行例行的高容量消息传递并不是一件好事。

如果以这种方式使用此消息表,您可能需要考虑进行“正确”的IPC实现。 Perl IPC man page有很多有用的信息。