我有以下环境,我注意到作业在 2 分钟后随机排队两次:
- 基于PHP F3框架的Web App
- Pheanstalk 3.0.2 在应用程序中使用作曲家
- 豆茎服务器
- Beanstalkd 控制台应用程序
- 主管
- Worker 场景:输入多个作业批量删除客户端
- 问题:相同的作业(已处理)在 2 分钟后以不同的 ID 排队两次
我使用以下代码:
$queue = new Pheanstalk\Pheanstalk("127.0.0.1:14803");
$queue->watch("tubeDelete");
while ($job = $queue->reserve()) {
$log->write("Entering Job {$job->getId()} \n");
$log->write("Job {$job->getId()} data : {$job->getData()} \n");
$data = json_decode($job->getData(), true);
try {
$deleteResponse = $client->deleteClient($clientId)
if($deleteResponse){
$log->write("client $clientId deleted successfully");
$queue->delete($job);
}else{
$log->write("Failed to delete client $clientId, check the log file");
$queue->bury($job);
}
} catch (Exception $e) {
$log->write("Failed to delete client $clientId with PHP exception, check the log file");
$queue->bury($job);
}
}
日志文件:
Fri, 08 Dec 2017 13:00:23 +0200 Entering Job 92428501
Fri, 08 Dec 2017 13:00:23 +0200 Job 92428501 data : {"clientId":"1397"}
Fri, 08 Dec 2017 13:00:24 +0200 Client 1397 deleted successfully
Fri, 08 Dec 2017 13:00:24 +0200 Entering Job 92428502
Fri, 08 Dec 2017 13:00:24 +0200 Job 92428502 data : {"clientId":"1398"}
Fri, 08 Dec 2017 13:00:26 +0200 Client 1398 deleted successfully
Fri, 08 Dec 2017 13:00:26 +0200 Entering Job 92428503
Fri, 08 Dec 2017 13:00:26 +0200 Job 92428503 data : {"clientId":"1399"}
Fri, 08 Dec 2017 13:00:28 +0200 Client 1399 deleted successfully
Fri, 08 Dec 2017 13:00:28 +0200 Entering Job 92428504
Fri, 08 Dec 2017 13:00:28 +0200 Job 92428504 data : {"clientId":"1401"}
Fri, 08 Dec 2017 13:00:30 +0200 Client 1401 deleted successfully
Fri, 08 Dec 2017 13:00:30 +0200 Entering Job 92428505
Fri, 08 Dec 2017 13:00:30 +0200 Job 92428505 data : {"clientId":"1402"}
Fri, 08 Dec 2017 13:00:31 +0200 Client 1402 deleted successfully
Fri, 08 Dec 2017 13:00:31 +0200 Entering Job 92428506
Fri, 08 Dec 2017 13:00:31 +0200 Job 92428506 data : {"clientId":"1403"}
Fri, 08 Dec 2017 13:00:33 +0200 Client 1403 deleted successfully
Fri, 08 Dec 2017 13:00:33 +0200 Entering Job 92428507
Fri, 08 Dec 2017 13:00:33 +0200 Job 92428507 data : {"clientId":"1404"}
Fri, 08 Dec 2017 13:00:34 +0200 Client 1404 deleted successfully
Fri, 08 Dec 2017 13:00:34 +0200 Entering Job 92428508
Fri, 08 Dec 2017 13:00:34 +0200 Job 92428508 data : {"clientId":"1405"}
Fri, 08 Dec 2017 13:00:36 +0200 Client 1405 deleted successfully
Fri, 08 Dec 2017 13:00:36 +0200 Entering Job 92428509
Fri, 08 Dec 2017 13:00:36 +0200 Job 92428509 data : {"clientId":"1409"}
Fri, 08 Dec 2017 13:00:37 +0200 Client 1409 deleted successfully
Fri, 08 Dec 2017 13:00:37 +0200 Entering Job 92428510
Fri, 08 Dec 2017 13:00:37 +0200 Job 92428510 data : {"clientId":"1421"}
Fri, 08 Dec 2017 13:00:38 +0200 Client 1421 deleted successfully
Fri, 08 Dec 2017 13:02:23 +0200 Entering Job 92428511
Fri, 08 Dec 2017 13:02:23 +0200 Job 92428511 data : {"clientId":"1397"}
Fri, 08 Dec 2017 13:02:23 +0200 Client 1397 deleted successfully
Fri, 08 Dec 2017 13:02:23 +0200 Entering Job 92428512
Fri, 08 Dec 2017 13:02:23 +0200 Job 92428512 data : {"clientId":"1398"}
Fri, 08 Dec 2017 13:02:23 +0200 Client 1398 deleted successfully
Fri, 08 Dec 2017 13:02:23 +0200 Entering Job 92428513
Fri, 08 Dec 2017 13:02:23 +0200 Job 92428513 data : {"clientId":"1399"}
Fri, 08 Dec 2017 13:02:24 +0200 Client 1399 deleted successfully
Fri, 08 Dec 2017 13:02:24 +0200 Entering Job 92428514
Fri, 08 Dec 2017 13:02:24 +0200 Job 92428514 data : {"clientId":"1401"}
Fri, 08 Dec 2017 13:02:24 +0200 Client 1401 deleted successfully
Fri, 08 Dec 2017 13:02:24 +0200 Entering Job 92428515
Fri, 08 Dec 2017 13:02:24 +0200 Job 92428515 data : {"clientId":"1402"}
Fri, 08 Dec 2017 13:02:24 +0200 Client 1402 deleted successfully
Fri, 08 Dec 2017 13:02:24 +0200 Entering Job 92428516
Fri, 08 Dec 2017 13:02:24 +0200 Job 92428516 data : {"clientId":"1403"}
Fri, 08 Dec 2017 13:02:24 +0200 Client 1403 deleted successfully
Fri, 08 Dec 2017 13:02:24 +0200 Entering Job 92428517
Fri, 08 Dec 2017 13:02:24 +0200 Job 92428517 data : {"clientId":"1404"}
Fri, 08 Dec 2017 13:02:24 +0200 Client 1404 deleted successfully
Fri, 08 Dec 2017 13:02:24 +0200 Entering Job 92428518
Fri, 08 Dec 2017 13:02:24 +0200 Job 92428518 data : {"clientId":"1405"}
Fri, 08 Dec 2017 13:02:24 +0200 Client 1405 deleted successfully
Fri, 08 Dec 2017 13:02:24 +0200 Entering Job 92428519
Fri, 08 Dec 2017 13:02:24 +0200 Job 92428519 data : {"clientId":"1409"}
Fri, 08 Dec 2017 13:02:24 +0200 Client 1409 deleted successfully
Fri, 08 Dec 2017 13:02:24 +0200 Entering Job 92428520
Fri, 08 Dec 2017 13:02:24 +0200 Job 92428520 data : {"clientId":"1421"}
Fri, 08 Dec 2017 13:02:24 +0200 Client 1421 deleted successfully
因此,您可以在 2 分钟后找到由于执行相同作业而导致的重复客户端,例如:
Fri, 08 Dec 2017 13:00:23 +0200 Entering Job 92428501
Fri, 08 Dec 2017 13:00:23 +0200 Job 92428501 data : {"clientId":"1397"}
Fri, 08 Dec 2017 13:00:24 +0200 Client 1397 deleted successfully
Fri, 08 Dec 2017 13:02:23 +0200 Entering Job 92428511
Fri, 08 Dec 2017 13:02:23 +0200 Job 92428511 data : {"clientId":"1397"}
Fri, 08 Dec 2017 13:02:23 +0200 Client 1397 deleted successfully
是与 TTR / DEADLINE_SOON / 配置问题相关的问题还是与 supervisord 相关的问题?