2021-05-12 14:32:11
Ubuntu 16.04設定 RabbitMQ 服務
1.首先,新增相應的源
在 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. 更新並安裝服務
sudo apt-get update
sudo apt-get install rabbitmq-serve
安裝結束後預設是執行的
invoke-rc.d rabbitmq-server stop/start //可以執行,該程式碼進行開啟或關閉
開啟頁面管理
rabbitmq-plugins enable rabbitmq_management
執行該程式碼即可存取 http://localhost:15672/ 進行頁面管理
以上,安裝RabbitMQ 服務就完成了。
RabbitMQ一些基本函數介紹
1.連線
// 連線服務,獲取控制代碼
$connection = new AMQPStreamConnection('localhost', 5672, 'guest', 'guest');
$connection->isConnected() or die("Cannot connect to the broker!n");
$channel = $connection->channel();
2.定義
//direct:在direct型別的exchange中,只有這兩個routingkey完全相同,exchange才會選擇對應的binging進行訊息路由。
//fanout:此exchange的路由規則很簡單直接將訊息路由到所有系結的佇列中,無須對訊息的routingkey進行匹配操作。
//topic:此型別exchange和上面的direct型別差不多,這裡的routingkey可以有萬用字元:'*','#' ,其中'*'表示匹配一個單詞,
// '#'則表示匹配沒有或者多個單詞,對 key 進行模式匹配,比如 ab* 可以傳遞到所有 ab* 的 queue
// headers : 不常用
$channel->exchange_declare('demo', 'direct'); //宣告交換機,相當於定義規則
//passive: 消極處理, 判斷是否存在佇列,存在則返回,不存在直接丟擲 PhpAmqpLibExceptionAMQPProtocolChannelException 異常
//durable:true、false true:在伺服器重新啟動時,能夠存活
//exclusive :是否為當前連線的專用佇列,在連線斷開後,會自動刪除該佇列,生產環境中應該很少用到吧。
//autodelete:當沒有任何消費者使用時,自動刪除該佇列
//nowait : 相當於一個async版的宣告佇列,可以看到是沒有返回的。調完方法就結束。也不等佇列建立結果
//auto_delete: 當所有消費用戶端連線斷開後,是否自動刪除佇列
//arguments: 附加引數,規則設定
$channel->queue_declare('kzae', false, false, false, false);
//佇列系結交換機
$channel->queue_bind('hello','amq.direct', 'bbb');
3.傳送
//mandatory標誌告訴伺服器至少將該訊息route到一個佇列中,否則將訊息返還給生產者;
//immediate標誌告訴伺服器如果該訊息關聯的queue上有消費者,則馬上將訊息投遞給它,如果所有queue都沒有消費者,
//直接把訊息返還給生產者,不用將訊息入佇列等待消費者了
$channel->basic_publish($msg, 'amq.direct', 'bbb');
4.接收
//採用 no-ack 的方式進行確認,也就是說,每次 Consumer 接到資料後,不管是否處理完成,RabbitMQ Server 會立即把這個 Message 標記為完成,然後從 Queue 中刪除
$channel->basic_consume('hello', '', false, false, false, false, $callback);
5.回撥
$callback = function(PhpAmqpLibMessageAMQPMessage $msg) {
echo " [x] Received ", $msg->body, "n";
//delivery_info['channel']: PhpAmqpLibChannelAMQPChannel
var_dump($msg->delivery_info);
$msg->delivery_info['channel']->basic_ack($msg->delivery_info['delivery_tag']); //確認ack
};
6. 結束
$channel->close();
$connection->close();
CentOS 7.2 下 RabbitMQ 叢集搭建 http://www.linuxidc.com/Linux/2016-12/137812.htm
CentOS7環境安裝使用專業的訊息佇列產品RabbitMQ http://www.linuxidc.com/Linux/2016-11/13673.htm
RabbitMQ入門教學 http://www.linuxidc.com/Linux/2015-02/113983.htm
在CentOS7上安裝RabbitMQ 詳解 http://www.linuxidc.com/Linux/2017-05/143765.htm
NServiceBus 結合 RabbitMQ 使用教學 http://www.linuxidc.com/Linux/2017-05/143787.htm
CentOS 7下RabbitMQ叢集安裝設定 http://www.linuxidc.com/Linux/2017-10/147707.htm
RabbitMQ實戰:高效部署分散式訊息佇列 中文PDF掃描版 http://www.linuxidc.com/Linux/2017-10/147592.htm
CentOS7上RabbitMQ安裝詳述 http://www.linuxidc.com/Linux/2017-12/149202.htm
RabbitMQ分散式叢集架構和高可用性(HA) http://www.linuxidc.com/Linux/2017-12/149466.htm
CentOS 7下安裝設定RabbitMQ詳細教學 http://www.linuxidc.com/Linux/2018-01/150600.htm
相關文章