function run() { $post = trim(file_get_contents('php://input')); if (empty($post)) { header('HTTP/1.1 421 No Event'); CRM_Core_Error::debug_var("ENDPOINT EVENT", "Needs to be called by mailjet", true, true); return; } $httpHeader = CRM_Mailjet_Page_EndPoint::processMessage($post); header($httpHeader); CRM_Utils_System::civiExit(); }
// index of the avg [1m,5m,15m] const MJ_MAX_LOAD = 2; const MJ_LOAD_CHECK_FREQ = 100; const MJ_COOLING_PERIOD = 20; $msg_since_check = 0; $arguments = getopt('q:'); $queue_name = $arguments['q']; function connect() { return new AMQPStreamConnection(CIVICRM_AMQP_HOST, CIVICRM_AMQP_PORT, CIVICRM_AMQP_USER, CIVICRM_AMQP_PASSWORD, CIVICRM_AMQP_VHOST); } $callback = function ($msg) { global $msg_since_check; try { $msg_handler = new CRM_Mailjet_Page_EndPoint(); $msg_handler->processMessage($msg->body); $msg->delivery_info['channel']->basic_ack($msg->delivery_info['delivery_tag']); } catch (Exception $ex) { $msg->delivery_info['channel']->basic_nack($msg->delivery_info['delivery_tag']); CRM_Core_Error::debug_var("MAILJET AMQP", $ex, true, true); } finally { $msg_since_check++; } }; $connection = connect(); $channel = $connection->channel(); debug('Waiting for messages. To exit press CTRL+C...'); while (true) { while (count($channel->callbacks)) { if ($msg_since_check >= MJ_LOAD_CHECK_FREQ) { $load = sys_getloadavg()[MJ_LOAD_INDEX];