rabbitmq学习4 -路由

<?php
	require_once __DIR__ . '/vendor/autoload.php';
	use PhpAmqpLib\Connection\AMQPStreamConnection;
	use PhpAmqpLib\Message\AMQPMessage;

	//1.连结服务器
	$connection = new AMQPStreamConnection('localhost',5672,'guest','guest');
	//2.声明通道
	$channel = $connection->channel();
	//创建名为logs的扇型交换机(fanout)
	$channel->exchange_declare('direct_logs', 'direct', false, false, false);	
	$data = implode(' ', array_slice($argv, 2));
	if(empty($data)) $data = "info: Hello World!";
	$msg = new AMQPMessage($data);
	$severity = isset($argv[1]) && !empty($argv[1]) ? $argv[1] : 'info';
	$channel->basic_publish($msg,'direct_logs', $severity);

	echo " [x] Sent ",$severity,':',$data," \n";

	$channel->close();
	$connection->close();
<?php
	require_once __DIR__ . '/vendor/autoload.php';
	use PhpAmqpLib\Connection\AMQPStreamConnection;

	//1.连结服务器
	$connection = new AMQPStreamConnection('localhost',5672,'guest','guest');
	//2.声明通道
	$channel = $connection->channel();

	$channel->exchange_declare('direct_logs', 'direct', false, false, false);
	//随机生成的临时队列
	//让服务器为我们选择一个随机的队列名(推荐	
	list($queue_name, ,) = $channel->queue_declare("", false, false, true, false);

	//我们已经创建了一个扇型交换机(fanout)和一个队列。现在我们需要告诉交换机如何发送消息给我们的队列。交换器和队列之间的联系我们称之为绑定
	$severities = array_slice($argv, 1);
	if(empty($severities)) {
	    echo $argv[0].'\n';
	    exit(1);
	}
	foreach($severities as $severity) {
	    $channel->queue_bind($queue_name, 'direct_logs', $severity);
	}

	echo ' [*] Waiting for logs. To exit press CTRL+C', "\n";

	$callback = function($msg){
  		echo ' [x] ',$msg->delivery_info['routing_key'], ':', $msg->body, "\n";
	};

	$channel->basic_consume($queue_name, '', false, true, false, false, $callback);

	while(count($channel->callbacks)) {
    	$channel->wait();
	}

	$channel->close();
	$connection->close();

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值