1. 程式人生 > >RabbitM簡單應用

RabbitM簡單應用

lag pex start true flag ive 類型 can art

服務端:

<?php
//配置信息  
$conn_args = array(  
    ‘host‘ => ‘127.0.0.1‘,   
    ‘port‘ => ‘5672‘,   
    ‘login‘ => ‘guest‘,   
    ‘password‘ => ‘guest‘,  
    ‘vhost‘=>‘/‘  
);    
$e_name = ‘switch_name‘; //交換機名  
//$q_name = ‘queue_name‘; //無需隊列名  
$k_route = ‘route_key‘; //路由key  
  
//創建連接和channel  
$conn = new AMQPConnection($conn_args); if (!$conn->connect()) { die("Cannot connect to the broker!\n"); } $channel = new AMQPChannel($conn); //創建交換機對象 $ex = new AMQPExchange($channel); $ex->setName($e_name); //發送消息 $channel->startTransaction(); //開始事務
for ($i=1; $i < 5; $i++) { //消息內容 $message = "這是消息".rand(1000,9999).‘,發送時間:‘.date(‘Y-m-d H:i:s‘,time()); echo "Send Message:".$ex->publish($message, $k_route)."\n"; } $channel->commitTransaction(); //提交事務 $conn->disconnect();

客戶端:

<?php 
//配置信息  
$conn_args = array
( ‘host‘ => ‘127.0.0.1‘, ‘port‘ => ‘5672‘, ‘login‘ => ‘guest‘, ‘password‘ => ‘guest‘, ‘vhost‘=>‘/‘ ); $e_name = ‘switch_name‘; //交換機名 $q_name = ‘queue_name‘; //隊列名 $k_route = ‘route_key‘; //路由key //創建連接和channel $conn = new AMQPConnection($conn_args); if (!$conn->connect()) { die("Cannot connect to the broker!\n"); } $channel = new AMQPChannel($conn); //創建交換機 $ex = new AMQPExchange($channel); $ex->setName($e_name); $ex->setType(AMQP_EX_TYPE_DIRECT); //direct類型 $ex->setFlags(AMQP_DURABLE); //持久化 echo "Exchange Status:".$ex->declare()."\n"; //創建隊列 $q = new AMQPQueue($channel); $q->setName($q_name); $q->setFlags(AMQP_DURABLE); //持久化 echo "Message Total:".$q->declare()."\n"; //綁定交換機與隊列,並指定路由鍵 echo ‘Queue Bind: ‘.$q->bind($e_name, $k_route)."\n"; //阻塞模式接收消息 echo "Message:\n"; while(True){ $q->consume(‘processMessage‘); // $q->consume(‘processMessage‘, AMQP_AUTOACK); //自動ACK應答 } $conn->disconnect(); /** * 消費回調函數 * 處理消息 */ function processMessage($envelope, $queue) { $msg = $envelope->getBody(); echo $msg."\n"; //處理消息 $queue->ack($envelope->getDeliveryTag()); //手動發送ACK應答 }

RabbitM簡單應用