제품 및 주문 업데이트를 처리하고 이벤트 및 작업이 혼합 된 응용 프로그램을 사용하여 변경 사항에 응답합니다.Laravel 이벤트/작업 중복 제거
거의 2 년간이 작업을 해본 결과, Ive는 중복 이벤트 (중복 작업 등을 유발할 수있는)가 다른 상호 연결된 시스템에서 전송 될 때 가장 큰 병목 현상을 발견했습니다.
정상적으로 작동하면 스파이크를 수용 할 수있는 충분한 여유 시간을 갖지만 실제로 사용량이 많아지면 눈덩이처럼 불며 이벤트 나 작업이 처리되지 않을 수 있습니다.
설치 Im은 MySQL (mariadb)을 사용하여 Laravel 4.2를 표준 설치 한 것으로, 여러 종류의 이벤트 (제품 재고 업데이트, 주문 발송 등)를 처리 할 수있는 대기열이있는 작업 및 이벤트를 지원합니다.
laravel이 동일한 작업과 관련된 작업 및/또는 작업을 추가하는 것을 방지 할 수있는 방법이 있는지 궁금합니다.
작업의 예는 다음과 같습니다
{
"job": "Illuminate\\Queue\\[email protected]",
"data": {
"commandName": "Staw\\Magento\\Jobs\\AddTrackingNumber",
"command": "O:40:\"Staw\\Magento\\Jobs\\AddTrackingNumber\":6:{s:17:\"\u0000*\u0000trackingNumber\";s:14:\"[Tracking Number]\";s:14:\"\u0000*\u0000orderNumber\";s:19:\"[Order NUmber]\";s:10:\"connection\";N;s:5:\"queue\";s:8:\"despatch\";s:5:\"delay\";N;s:6:\"\u0000*\u0000job\";N;}"
},
"id": "xGmsi6vo458cYGeJHDfpGCZG8QuAJXB7",
"attempts": 1
}
그리고 (이벤트)에서 이벤트 리스너
{
"job": "Illuminate\\Events\\[email protected]",
"data": {
"class": "Staw\\Magento\\Listeners\\OrderEventListener",
"method": "onOrderChangeAlert",
"data": "a:1:{i:0;O:49:\"Staw\\HiveEvent\\Events\\Order\\OrderChangeAlert\":6:{s:10:\"eventstart\";O:13:\"Carbon\\Carbon\":3:{s:4:\"date\";s:26:\"2017-12-14 11:20:04.000000\";s:13:\"timezone_type\";i:3;s:8:\"timezone\";s:13:\"Europe/London\";}s:8:\"chain_id\";s:13:\"5a325e64510ce\";s:10:\"channel_id\";i:1;s:11:\"channel_key\";N;s:9:\"entity_id\";s:19:\"[Order Number]\";s:5:\"queue\";s:5:\"event\";}}"
},
"id": "0GLUt1O9y6jaZ56yHKA8Vn9si1QNnmlf",
"attempts": 1
}
나는 내가 predis/predis 패키지를 사용 레디 스를 검색 할 수 있음을 알고 있어요을하지만, 이건 정말 성가신 것 같아요, 내 자신의 대기열을 만드는 것을 고려했습니다/아마도 DB에 물건의 더 많은 제어권을 가지고 있지만 이것은 큰 일처럼 보입니다. 그리고 내가 얻을 수있는 몇 가지 기능을 놓치고 있다고 느낄 것입니다. stock photography Laravel 설정 재고를 사용 하여.