rabbitmq PHP代码示例

来源:互联网 发布:centos ssh免密码登录 编辑:程序博客网 时间:2024/05/22 06:35

rabbitmq 安装及基础介绍请参考:http://www.cnblogs.com/diegodu/p/4971586.html


direct类型:

provider 端代码

//设置你的连接$conn_args = array('host' => 'localhost', 'port' => '5672', 'login' => 'guest', 'password' => 'guest','vhost' =>'/');$conn = new AMQPConnection($conn_args);if (!$conn->connect()) {echo "连接建立失败";exit;}$channel = new AMQPChannel($conn);$e_name = 'e_exchange'; //交换机名$key = 'key_one'; //路由key//创建交换机$ex = new AMQPExchange($channel);$ex->setName($e_name);//设置交换机名称$ex->setType(AMQP_EX_TYPE_DIRECT); //direct类型$ex->setFlags(AMQP_DURABLE); //持久化$ex->declareExchange(); //声明交换机echo $ex->publish('hello world',$key)."\n";}




consumer 端代码

$key='key_one';//连接RabbitMQ$conn_args = array( 'host'=>'127.0.0.1' , 'port'=> '5672', 'login'=>'guest' , 'password'=> 'guest','vhost' =>'/');$conn = new AMQPConnection($conn_args);$conn->connect();$channel = new AMQPChannel($conn);$q = new AMQPQueue($channel);$q->setName('queue'); //设置队列名称$q->setFlags(AMQP_DURABLE); //持久化设置$q->declareQueue();//声明队列$q->bind('e_exchange',$key); //绑定交换机while(True){$q->consume('consumer'); //回调方法为consumer}$conn->disconnect();function consumer($envelope, $queue) {$msg = $envelope->getBody();echo $msg."\n"; //处理消息$queue->ack($envelope->getDeliveryTag()); //手动发送ACK应答
}





fanout 模式

provider


/设置你的连接$conn_args = array('host' => 'localhost', 'port' => '5672', 'login' => 'guest', 'password' => 'guest','vhost' =>'/');$conn = new AMQPConnection($conn_args);if (!$conn->connect()) {echo "连接建立失败";exit;}$channel = new AMQPChannel($conn);$e_name = 'ex_fanout'; //交换机名//创建交换机$ex = new AMQPExchange($channel);$ex->setName($e_name);//设置交换机名称$ex->setType(AMQP_EX_TYPE_DIRECT); //direct类型$ex->setFlags(AMQP_DURABLE); //持久化$ex->declareExchange(); //声明交换机echo $ex->publish('hello world')."\n";



consumer 


//连接RabbitMQ$conn_args = array( 'host'=>'127.0.0.1' , 'port'=> '5672', 'login'=>'guest' , 'password'=> 'guest','vhost' =>'/');$conn = new AMQPConnection($conn_args);$conn->connect();$channel = new AMQPChannel($conn);$q = new AMQPQueue($channel);$q->setName('queue_one'); //设置队列名称$q->setFlags(AMQP_DURABLE); //持久化设置$q->declareQueue();//声明队列$q->bind('ex_fanout'); //绑定交换机while(True){$q->consume('consumer'); //回调方法为consumer}$conn->disconnect();function consumer($envelope, $queue) {$msg = $envelope->getBody();echo $msg."\n"; //处理消息$queue->ack($envelope->getDeliveryTag()); //手动发送ACK应答}





原创粉丝点击