【发布时间】:2015-10-20 16:24:15
【问题描述】:
我正在尝试将消息传递到交换器,然后再传递到特定队列。
$conn = new AMQPConnection(RABBITMQ_NODE_IP_ADDRESS, RABBITMQ_PORT, RABBITMQ_USERNAME, RABBITMQ_PASSWORD, RABBITMQ_VHOST);
$queue = RABBITMQ_QUEUE_CSV;
$exchange = RABBITMQ_EXCHANGE;
$ch = $conn->channel();
$ch->exchange_declare($exchange, 'direct', false, true, false);
$ch->queue_declare($queue, false, true, false, false);
$ch->queue_bind($queue, $exchange, $queue);
$msg = new AMQPMessage(json_encode($params), array('content_type' => 'text/plain', 'delivery_mode' => 2));
$ch->basic_publish($msg, $exchange);
$ch->close();
$conn->close();
$status = Array("status" => "Job queued");
交换的类型是“直接”,然后我添加了一个名为“foo_bar”的队列,并且作为“路由键”,我使用了相同的“foo_bar”字符串。
仅阅读文档http://www.rabbitmq.com/tutorials/tutorial-four-php.html 我无法理解我做错了什么:(
【问题讨论】:
-
进入rabbitmq管理界面,点击你想要的exchange,如果没有分配你的queue分配给exchange。您也可以在不干扰交换的情况下正常将消息添加到队列吗?
-
您好,我已经按照您的建议进行了操作,如果我这样做了,则不会发布任何消息。它默默地失败了
-
但它仅在您使用交换时发生,或者它也发生在简单的发布到队列中?
-
我可以发布到任何队列,当我尝试指定路由键时会发生这种情况
-
我最近在exchange上遇到了类似的问题,但是如果我没记错的话,我进入了manager > exchange,并分配了路由键和队列。看看那个。明天我会在我的办公室检查一下,看看确切的问题和解决方案。一般来说,交换是通过路由键将消息映射到队列,但我也必须通过管理器手动分配它。
标签: php rabbitmq php-amqplib