本文整理汇总了PHP中PhpAmqpLib\Channel\AMQPChannel::queue_bind方法的典型用法代码示例。如果您正苦于以下问题:PHP AMQPChannel::queue_bind方法的具体用法?PHP AMQPChannel::queue_bind怎么用?PHP AMQPChannel::queue_bind使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类PhpAmqpLib\Channel\AMQPChannel
的用法示例。
在下文中一共展示了AMQPChannel::queue_bind方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: runAndWait
/**
* {@inheritdoc}
*/
public function runAndWait(Task $task, $wait = 0, callable $completed = null, callable $timedout = null, callable $errored = null)
{
$waitForResult = $wait > 0;
// Event: before dispatching the task
$this->triggerEvent(self::EVENT_BEFORE_TASK_DISPATCHED, [$task]);
// Event: before serialization
$this->triggerEvent(self::EVENT_BEFORE_TASK_SERIALIZATION, [$task]);
$messageOptions = ['delivery_mode' => 2];
$replyExchange = null;
$replyQueue = null;
if ($waitForResult) {
// Create a temporary exchange (durable, autodelete) for communicating with the worker
$replyExchange = uniqid('tmp');
$this->channel->exchange_declare($replyExchange, 'fanout', false, true, true);
// Create and bind a queue for the dispatcher (our queue) (exclusive queue)
list($replyQueue, , ) = $this->channel->queue_declare('', false, false, true);
$this->channel->queue_bind($replyQueue, $replyExchange);
// Create and bind a queue for the worker (durable non-exclusive queue)
list($workerReplyQueue, , ) = $this->channel->queue_declare('', false, true, false);
$this->channel->queue_bind($workerReplyQueue, $replyExchange);
$messageOptions['reply_to'] = $replyExchange . ';' . $workerReplyQueue;
}
$message = new AMQPMessage(serialize($task), $messageOptions);
$this->channel->basic_publish($message, '', $this->queue);
if ($waitForResult) {
$this->waitForTask($wait, $replyExchange, $replyQueue, $completed, $timedout, $errored);
}
}
示例2: setup
/**
* @throws Exception\Configuration
*/
public function setup()
{
$this->connect();
$exchange = $this->getProperty('exchange');
if (empty($exchange)) {
throw new Exception\Configuration('Please check your settings, exchange is not defined.');
}
/*
name: $exchange
type: topic
passive: false
durable: true // the exchange will survive server restarts
auto_delete: false //the exchange won't be deleted once the channel is closed.
*/
$this->channel->exchange_declare($exchange, $this->getProperty('exchange_type'), $this->getProperty('exchange_passive'), $this->getProperty('exchange_durable'), $this->getProperty('exchange_auto_delete'), $this->getProperty('exchange_internal'), $this->getProperty('exchange_nowait'), $this->getProperty('exchange_properties'));
$queue = $this->getProperty('queue');
if (!empty($queue) || $this->getProperty('queue_force_declare')) {
/*
name: $queue
passive: false
durable: true // the queue will survive server restarts
exclusive: false // queue is deleted when connection closes
auto_delete: false //the queue won't be deleted once the channel is closed.
nowait: false // Doesn't wait on replies for certain things.
parameters: array // Extra data, like high availability params
*/
/** @var ['queue name', 'message count',] queueInfo */
$this->queueInfo = $this->channel->queue_declare($queue, $this->getProperty('queue_passive'), $this->getProperty('queue_durable'), $this->getProperty('queue_exclusive'), $this->getProperty('queue_auto_delete'), $this->getProperty('queue_nowait'), $this->getProperty('queue_properties'));
$this->channel->queue_bind($queue ?: $this->queueInfo[0], $exchange, $this->getProperty('routing'));
}
// clear at shutdown
register_shutdown_function([get_class(), 'shutdown'], $this->channel, $this->connection);
}
示例3: setUp
public function setUp()
{
$this->conn = $this->createConnection();
$this->ch = $this->conn->channel();
$this->ch->exchange_declare($this->exchange_name, 'direct', false, false, false);
list($this->queue_name, , ) = $this->ch->queue_declare();
$this->ch->queue_bind($this->queue_name, $this->exchange_name, $this->queue_name);
}
示例4: setUpAmqp
protected function setUpAmqp()
{
$this->conn = new AMQPSocketConnection($_SERVER['AMQP_HOST'], $_SERVER['AMQP_PORT'], $_SERVER['AMQP_USER'], $_SERVER['AMQP_PASS'], $_SERVER['AMQP_VHOST']);
$this->channel = $this->conn->channel();
$this->channel->exchange_declare('event_band.test.exchange', 'topic');
$this->channel->queue_declare('event_band.test.event');
$this->channel->queue_bind('event_band.test.event', 'event_band.test.exchange', 'event.#');
}
示例5: setUp
public function setUp()
{
$this->conn = new AMQPConnection(HOST, PORT, USER, PASS, VHOST);
$this->ch = $this->conn->channel();
$this->ch->exchange_declare($this->exchange_name, 'direct', false, false, false);
list($this->queue_name, , ) = $this->ch->queue_declare();
$this->ch->queue_bind($this->queue_name, $this->exchange_name, $this->queue_name);
}
示例6: initialize
/**
* @return void
*/
public function initialize()
{
if ($this->initialized) {
return;
}
$this->initialized = true;
$this->exchange->initialize();
$this->queue->initialize();
$this->channel->queue_bind($this->queue->name(), $this->exchange->name());
}
示例7: setUp
/**
* Set up AMQP connection.
*/
public function setUp()
{
$container = $this->getContainer();
$exchangeName = 'general';
$connection = new AMQPConnection($container->getParameter('ongr_task_messenger.publisher.default.amqp.host'), $container->getParameter('ongr_task_messenger.publisher.default.amqp.port'), $container->getParameter('ongr_task_messenger.publisher.default.amqp.user'), $container->getParameter('ongr_task_messenger.publisher.default.amqp.password'));
$this->channel = $connection->channel();
list($queueName, , ) = $this->channel->queue_declare();
$this->channel->queue_bind($queueName, $exchangeName, explode('.', gethostname())[0]);
$this->channel->basic_consume($queueName, getmypid(), false, true, true, true, [$this, 'verifyMessage']);
}
示例8: connect
/**
* @param $exchange_name
*/
private function connect($exchange_name)
{
if (null !== $this->channel) {
return;
}
$this->channel = $this->connection->channel();
$this->channel->exchange_declare($exchange_name, 'fanout', false, true, false);
$this->channel->queue_declare($exchange_name, false, true, false, false);
$this->channel->queue_bind($exchange_name, $exchange_name);
}
示例9: initialize
/**
* Create consumer.
*/
private function initialize()
{
$this->messages = [];
list($queue) = $this->channel->queue_declare('', false, false, true, true);
$this->channel->queue_bind($queue, $this->exchange);
$this->channel->basic_consume($queue, '', false, false, false, false, function (AMQPMessage $message) {
$this->messages[] = $message;
$this->channel->basic_cancel($message->delivery_info['consumer_tag']);
});
}
示例10: initialize
/**
* @return string
*/
public function initialize()
{
$inbox = 'inbox.' . $this->handler->name();
$queue = $this->handler->name();
$this->channel->exchange_declare($inbox, 'topic', false, true, false);
$this->channel->exchange_bind($inbox, 'inbox', '', false, new AMQPTable(['to' => '*']));
$this->channel->exchange_bind($inbox, 'inbox', '', false, new AMQPTable(['to' => $this->handler->name()]));
$this->channel->queue_declare($queue, false, true, false, false, false);
$this->channel->queue_bind($queue, $inbox, '#');
return $queue;
}
示例11: declareComponents
private function declareComponents($routingKey, $exchange, $queue = null)
{
$this->channel->exchange_declare('dead_letters', 'topic', false, true, false);
if ($queue !== null) {
$this->channel->queue_declare('dead_letter:' . $queue, false, true, false, false);
$this->channel->queue_bind('dead_letter:' . $queue, 'dead_letters', $routingKey . '.dead_letter');
}
$this->channel->exchange_declare($exchange, 'topic', false, true, false);
if ($queue !== null) {
$this->channel->queue_declare($queue, false, true, false, false, false, new AMQPTable(['x-dead-letter-exchange' => 'dead_letters', 'x-dead-letter-routing-key' => $routingKey . '.dead_letter']));
$this->channel->queue_bind($queue, $exchange, $routingKey);
}
}
示例12: getExchange
/**
* @param $queue
*
* @return string
*/
protected function getExchange($queue)
{
if (!array_key_exists($queue, $this->exchangeList)) {
/**
* queue and exchange the same
*/
$exchange = $queue;
$this->ch->queue_declare($queue, false, true, false, false);
$this->ch->exchange_declare($exchange, 'direct', false, true, false);
$this->ch->queue_bind($queue, $exchange);
$this->exchangeList[$exchange] = $exchange;
}
return $queue;
}
示例13: setupChannel
/**
* Setup the exchanges, and queues and channel
*/
protected function setupChannel()
{
$this->ch = $this->conn->channel();
$this->ch->exchange_declare($this->exchange, 'direct', false, false, false);
$this->ch->queue_declare($this->queue);
$this->ch->queue_bind($this->queue, $this->exchange, $this->queue);
}
示例14: declareAndBindQueue
protected function declareAndBindQueue($queue)
{
if (!$this->hasQueue($queue)) {
$this->addQueue($queue);
$this->channel->queue_declare($queue, false, true, false, false);
$this->channel->queue_bind($queue, $this->getExchange(), $queue);
$this->logger->info(sprintf("Queue %s declared.", $queue));
}
}
示例15: delayed
/**
* {@inheritdoc}
*/
public function delayed($queue, $delay, Job $job)
{
$this->exchangeDeclare('delay');
$delay = $delay * 1000;
$tmpQueue = $this->queueDeclare('', array('x-expires' => array('I', $delay + 2000), 'x-message-ttl' => array('I', $delay), 'x-dead-letter-exchange' => array('S', 'delay'), 'x-dead-letter-routing-key' => array('S', $queue)));
$this->channel->queue_bind($queue, 'delay', $queue);
$msg = $this->prepareMessage($queue, $job);
return $this->channel->basic_publish($msg, '', reset($tmpQueue));
}