日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
Ubuntu16.04配置RabbitMQ服務(wù)

1.首先,添加相應(yīng)的源

在 ubuntu 16.04 下

echo "deb https://dl.bintray.com/rabbitmq/debian xenial main" | sudo tee /etc/apt/sources.list.d/bintray.rabbitmq.list

在 Ubuntu 17.10 下

echo "deb https://dl.bintray.com/rabbitmq/debian artful main" | sudo tee /etc/apt/sources.list.d/bintray.rabbitmq.list

2.配置公鑰

wget -O- https://www.rabbitmq.com/rabbitmq-release-signing-key.asc | sudo apt-key add -

3. 更新并安裝服務(wù)

sudo apt-get update

sudo apt-get install rabbitmq-serve

安裝結(jié)束后默認(rèn)是運(yùn)行的

invoke-rc.d rabbitmq-server stop/start  //可以運(yùn)行,該代碼進(jìn)行開(kāi)啟或關(guān)閉

開(kāi)啟頁(yè)面管理

rabbitmq-plugins enable rabbitmq_management

運(yùn)行該代碼即可訪問(wèn) http://localhost:15672/ 進(jìn)行頁(yè)面管理

以上,安裝RabbitMQ 服務(wù)就完成了。

RabbitMQ一些基本函數(shù)介紹

1.連接

// 連接服務(wù),獲取句柄
$connection = new AMQPStreamConnection('localhost', 5672, 'guest', 'guest');
 
$connection->isConnected() or die("Cannot connect to the broker!\n");
 
$channel = $connection->channel();

2.定義

//direct:在direct類(lèi)型的exchange中,只有這兩個(gè)routingkey完全相同,exchange才會(huì)選擇對(duì)應(yīng)的binging進(jìn)行消息路由。
//fanout:此exchange的路由規(guī)則很簡(jiǎn)單直接將消息路由到所有綁定的隊(duì)列中,無(wú)須對(duì)消息的routingkey進(jìn)行匹配操作。
//topic:此類(lèi)型exchange和上面的direct類(lèi)型差不多,這里的routingkey可以有通配符:'*','#' ,其中'*'表示匹配一個(gè)單詞,
// '#'則表示匹配沒(méi)有或者多個(gè)單詞,對(duì) key 進(jìn)行模式匹配,比如 ab* 可以傳遞到所有 ab* 的 queue
// headers : 不常用
$channel->exchange_declare('demo', 'direct'); //聲明交換機(jī),相當(dāng)于定義規(guī)則

//passive: 消極處理, 判斷是否存在隊(duì)列,存在則返回,不存在直接拋出 PhpAmqpLib\Exception\AMQPProtocolChannelException 異常
//durable:true、false true:在服務(wù)器重啟時(shí),能夠存活
//exclusive :是否為當(dāng)前連接的專(zhuān)用隊(duì)列,在連接斷開(kāi)后,會(huì)自動(dòng)刪除該隊(duì)列,生產(chǎn)環(huán)境中應(yīng)該很少用到吧。
//autodelete:當(dāng)沒(méi)有任何消費(fèi)者使用時(shí),自動(dòng)刪除該隊(duì)列
//nowait : 相當(dāng)于一個(gè)async版的聲明隊(duì)列,可以看到是沒(méi)有返回的。調(diào)完方法就結(jié)束。也不等隊(duì)列創(chuàng)建結(jié)果
//auto_delete: 當(dāng)所有消費(fèi)客戶端連接斷開(kāi)后,是否自動(dòng)刪除隊(duì)列
//arguments: 附加參數(shù),規(guī)則設(shè)置
$channel->queue_declare('kzae', false, false, false, false);

//隊(duì)列綁定交換機(jī)
$channel->queue_bind('hello','amq.direct', 'bbb');

3.發(fā)送

//mandatory標(biāo)志告訴服務(wù)器至少將該消息route到一個(gè)隊(duì)列中,否則將消息返還給生產(chǎn)者;
//immediate標(biāo)志告訴服務(wù)器如果該消息關(guān)聯(lián)的queue上有消費(fèi)者,則馬上將消息投遞給它,如果所有queue都沒(méi)有消費(fèi)者,
//直接把消息返還給生產(chǎn)者,不用將消息入隊(duì)列等待消費(fèi)者了
$channel->basic_publish($msg, 'amq.direct', 'bbb');

4.接收

//采用 no-ack 的方式進(jìn)行確認(rèn),也就是說(shuō),每次 Consumer 接到數(shù)據(jù)后,不管是否處理完成,RabbitMQ Server 會(huì)立即把這個(gè) Message 標(biāo)記為完成,然后從 Queue 中刪除
$channel->basic_consume('hello', '', false, false, false, false, $callback);

5.回調(diào)

$callback = function(PhpAmqpLib\Message\AMQPMessage $msg) {
    echo " [x] Received ", $msg->body, "\n";
 
    //delivery_info['channel']: PhpAmqpLib\Channel\AMQPChannel
    var_dump($msg->delivery_info);
    $msg->delivery_info['channel']->basic_ack($msg->delivery_info['delivery_tag']); //確認(rèn)ack
};

6. 結(jié)束

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


網(wǎng)站名稱(chēng):Ubuntu16.04配置RabbitMQ服務(wù)
文章位置:http://m.5511xx.com/article/copjcdj.html