channel(); $channel->access_request($CC_CONFIG["rabbitmq"]["vhost"], false, false, true, true); //I'm pretty sure we DON'T want to autodelete ANY exchanges but I'm keeping the code //the way it is just so I don't accidentally break anything when I add the Analyzer code in. -- Albert, March 13, 2014 $channel->exchange_declare($exchange, $exchangeType, false, true, $autoDeleteExchange); $msg = new AMQPMessage($data, array('content_type' => 'text/plain')); $channel->basic_publish($msg, $exchange); $channel->close(); $conn->close(); } public static function SendMessageToPypo($event_type, $md) { $md["event_type"] = $event_type; $exchange = 'airtime-pypo'; $data = json_encode($md, JSON_FORCE_OBJECT); self::sendMessage($exchange, 'direct', true, $data); } public static function SendMessageToMediaMonitor($event_type, $md) { $md["event_type"] = $event_type; $exchange = 'airtime-media-monitor'; $data = json_encode($md); self::sendMessage($exchange, 'direct', true, $data); } public static function SendMessageToShowRecorder($event_type) { $exchange = 'airtime-pypo'; $now = new DateTime("@".time()); //in UTC timezone $end_timestamp = new DateTime("@".(time() + 3600*2)); //in UTC timezone $temp = array(); $temp['event_type'] = $event_type; $temp['server_timezone'] = Application_Model_Preference::GetTimezone(); if ($event_type == "update_recorder_schedule") { $temp['shows'] = Application_Model_Show::getShows($now, $end_timestamp, $onlyRecord=true); } $data = json_encode($temp); self::sendMessage($exchange, 'direct', true, $data); } public static function SendMessageToAnalyzer($tmpFilePath, $importedStorageDirectory, $originalFilename, $callbackUrl, $apiKey) { //Hack for Airtime Pro. The RabbitMQ settings for communicating with airtime_analyzer are global //and shared between all instances on Airtime Pro. $config = parse_ini_file("/etc/airtime-saas/rabbitmq-analyzer.ini", true); $conn = new AMQPConnection($config["rabbitmq"]["host"], $config["rabbitmq"]["port"], $config["rabbitmq"]["user"], $config["rabbitmq"]["password"], $config["rabbitmq"]["vhost"]); $exchange = 'airtime-uploads'; $exchangeType = 'topic'; $queue = 'airtime-uploads'; $autoDeleteExchange = false; $data['tmp_file_path'] = $tmpFilePath; $data['import_directory'] = $importedStorageDirectory; $data['original_filename'] = $originalFilename; $data['callback_url'] = $callbackUrl; $data['api_key'] = $apiKey; $jsonData = json_encode($data); //self::sendMessage($exchange, 'topic', false, $jsonData, 'airtime-uploads'); if (!isset($conn)) { throw new Exception("Cannot connect to RabbitMQ server"); } $channel = $conn->channel(); $channel->access_request($config["rabbitmq"]["vhost"], false, false, true, true); //I'm pretty sure we DON'T want to autodelete ANY exchanges but I'm keeping the code //the way it is just so I don't accidentally break anything when I add the Analyzer code in. -- Albert, March 13, 2014 $channel->exchange_declare($exchange, $exchangeType, false, true, $autoDeleteExchange); $msg = new AMQPMessage($data, array('content_type' => 'text/plain')); $channel->basic_publish($msg, $exchange); $channel->close(); $conn->close(); } public static function SendMessageToHaproxyConfigDaemon($md){ $config = parse_ini_file("/etc/airtime-saas/rabbitmq.ini", true); $conn = new AMQPConnection($config["rabbitmq"]["host"], $config["rabbitmq"]["port"], $config["rabbitmq"]["user"], $config["rabbitmq"]["password"], $config["rabbitmq"]["vhost"]); $exchange = $config["rabbitmq"]["queue"]; $queue = $config["rabbitmq"]["queue"]; $ch = $conn->channel(); /* name: $queue passive: false durable: true // the queue will survive server restarts exclusive: false // the queue can be accessed in other channels auto_delete: false //the queue won't be deleted once the channel is closed. */ $ch->queue_declare($queue, false, true, false, false); /* name: $exchange type: direct passive: false durable: true // the exchange will survive server restarts auto_delete: false //the exchange won't be deleted once the channel is closed. */ $ch->exchange_declare($exchange, 'direct', false, true, false); $ch->queue_bind($queue, $exchange); $data = json_encode($md).PHP_EOL; $msg = new AMQPMessage($data, array('content_type' => 'application/json')); $ch->basic_publish($msg, $exchange); $ch->close(); $conn->close(); } }