'localhost', 'port' => '5672', 'username' => 'guest', 'password' => 'guest', 'channel' => 'notify-channel', 'vhost' => '/my-app' ]); ``` ### Suggested Usage Since you should only notify RabbitMQ channel of a successful deployment, the `deploy:rabbit` task should be executed right at the end. ```php // deploy.php before('deploy:end', 'deploy:rabbit'); ``` */ namespace Deployer; use Deployer\Task\Context; use PhpAmqpLib\Connection\AMQPConnection; use PhpAmqpLib\Message\AMQPMessage; desc('Notifying RabbitMQ channel about deployment'); task('deploy:rabbit', function () { if (!class_exists('PhpAmqpLib\Connection\AMQPConnection')) { throw new \RuntimeException("Please install php package videlalvaro/php-amqplib to use rabbitmq"); } $config = get('rabbit', []); if (!isset($config['message'])) { $releasePath = get('release_path'); $host = Context::get()->getHost(); $stage = get('stage', false); $stageInfo = ($stage) ? sprintf(' on *%s*', $stage) : ''; $message = "Deployment to '%s'%s was successful\n(%s)"; $config['message'] = sprintf( $message, $host->getHostname(), $stageInfo, $releasePath ); } $defaultConfig = array( 'host' => 'localhost', 'port' => 5672, 'username' => 'guest', 'password' => 'guest', 'vhost' => '/', ); $config = array_merge($defaultConfig, $config); if (!is_array($config) || !isset($config['channel']) || !isset($config['host']) || !isset($config['port']) || !isset($config['username']) || !isset($config['password']) || !isset($config['vhost']) ) { throw new \RuntimeException("Please configure rabbit config: set('rabbit', array('channel' => 'channel', 'host' => 'host', 'port' => 'port', 'username' => 'username', 'password' => 'password'));"); } $connection = new AMQPConnection($config['host'], $config['port'], $config['username'], $config['password'], $config['vhost']); $channel = $connection->channel(); $msg = new AMQPMessage($config['message']); $channel->basic_publish($msg, $config['channel'], $config['channel']); $channel->close(); $connection->close(); });