目次
1、AMQP_EX_TYPE_DIRECT:直连型
ホームページ php教程 php手册 php amqp 消息队列 RabbitMQ 交换器类型 直连 (三)

php amqp 消息队列 RabbitMQ 交换器类型 直连 (三)

Jun 13, 2016 am 09:42 AM
amqp 情報

1、AMQP_EX_TYPE_DIRECT:直连型

直连型又包括: 1对1 和1对N(N对1、 N对N)

接收端receive.php代码如下
<?php

$connect = new AMQPConnection();
$connect->connect();

$channel = new AMQPChannel($connect);

$exchange = new AMQPExchange($channel);
$exchange->setName('exchange');
$exchange->setType(AMQP_EX_TYPE_DIRECT);
$exchange->declare();

$queue = new AMQPQueue($channel);
$queue->setName('logs');
$queue->declare();

$queue->bind('exchange', 'logs');

while (true) {
    $queue->consume('callback');
}

$connection->close();

function callback($envelope, $queue) {
    var_dump($envelope->getBody());
    $queue->nack($envelope->getDeliveryTag());
}
ログイン後にコピー

发送端send.php代码如下
<?php

$connect = new AMQPConnection();
$connect->connect();

$channel = new AMQPChannel($connect);

$exchange = new AMQPExchange($channel);
$exchange->setName('exchange');
$exchange->setType(AMQP_EX_TYPE_DIRECT);
$exchange->declare();

$exchange->publish('direct type test','logs');
var_dump("Send Message OK");

$connect->disconnect();
ログイン後にコピー

运行结果如图所示




创建receive_one.php和receive_two.php 并把send.php代码改成如下代码方便我们观看 receive_one.php 和 receive_two.php 代码相同 或者用dos运行多个接收端
<?php

$connect = new AMQPConnection();
$connect->connect();

$channel = new AMQPChannel($connect);

$exchange = new AMQPExchange($channel);
$exchange->setName('exchange');
$exchange->setType(AMQP_EX_TYPE_DIRECT);
$exchange->declare();

$queue = new AMQPQueue($channel);
$queue->setName('logs');
@$queue->declare();

$queue->bind('exchange', 'logs');

while (true) {
    $queue->consume('callback');
}

$connection->close();

function callback($envelope, $queue) {
    var_dump($envelope->getBody());
    $queue->nack($envelope->getDeliveryTag());
}
ログイン後にコピー




send.php
<?php

$connect = new AMQPConnection();
$connect->connect();

$channel = new AMQPChannel($connect);

$exchange = new AMQPExchange($channel);
$exchange->setName('exchange');
$exchange->setType(AMQP_EX_TYPE_DIRECT);
$exchange->declare();

for ($index = 1; $index < 5; $index++) {
    $exchange->publish($index,'logs');
    var_dump("Send:$index");
}

$exchange->delete();
$connect->disconnect();
ログイン後にコピー

运行结果如下

列队会把消息分配给每一个接收端分配处理这里看似完美但是如果想要更好的处理不同的任务就需要 公平调度
比如当1、3处理的都是简单的人 2、4都是处理的复杂的任务 如果任务过多时 receive_one.php是空闲的而receive_two.php是任务繁重的 我们进行如下测试 send.php改成5改成50
for ($index = 1; $index < 50; $index++) {
    $exchange->publish($index,'logs');
    var_dump("Send:$index");
}
ログイン後にコピー

receive_two.php 加上 sleep(3)
function callback($envelope, $queue) {
    var_dump($envelope->getBody());
    sleep(3);
    $queue->nack($envelope->getDeliveryTag());
}
ログイン後にコピー

我们运行程序结果如下


receive_one全部运行完而receive_two才运行一个 之后receive_one一直空闲 我们可以通过 在接收端设置 $channel->setPrefetchCount(1);
任务没人完成前不接收新的消息把消息发送给其他接收端
如下receive_one.php 和 receive_two.php
$channel = new AMQPChannel($connect);
ログイン後にコピー
改成如下
$channel = new AMQPChannel($connect);
$channel->setPrefetchCount(1);
ログイン後にコピー




このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

メッセージを送信したが相手に拒否された場合は何を意味するのでしょうか? メッセージを送信したが相手に拒否された場合は何を意味するのでしょうか? Mar 07, 2024 pm 03:59 PM

メッセージを送信しましたが、相手に拒否されました これは、送信した情報はデバイスから正常に送信されましたが、何らかの理由で相手がメッセージを受信できなかったことを意味します。具体的には、通常、相手が特定の権限を設定しているか、特定のアクションを行っているため、あなたの情報が正常に受信されないことが原因です。

iOS 17: メッセージで絵文字をステッカーとして使用する方法 iOS 17: メッセージで絵文字をステッカーとして使用する方法 Sep 18, 2023 pm 05:13 PM

iOS17 では、Apple はメッセージ アプリにいくつかの新機能を追加し、他の Apple ユーザーとのコミュニケーションをより創造的で楽しいものにしました。絵文字をスタンプとして利用できるのも特徴の1つです。ステッカーはメッセージ アプリで何年も使用されてきましたが、これまでのところ大きな変化はありません。これは、iOS17 では、Apple がすべての標準絵文字をステッカーとして扱い、実際のステッカーと同じように使用できるようにするためです。これは基本的に、会話にそれらを挿入することに制限がなくなったことを意味します。メッセージバブル上の任意の場所にドラッグすることもできるようになりました。それらを重ねて小さな絵文字シーンを作成することもできます。次の手順は、iOS17 での動作を示しています。

iOS 17 の iMessage で右にスワイプしてすばやく返信する方法 iOS 17 の iMessage で右にスワイプしてすばやく返信する方法 Sep 20, 2023 am 10:45 AM

iPhone の iMessage でスワイプして返信する方法 注: スワイプして返信機能は、iOS 17 の iMessage 会話でのみ機能し、メッセージ アプリでの通常の SMS 会話では機能しません。 iPhone でメッセージ アプリを開きます。次に、iMessage の会話に移動し、返信したい iMessage を右にスワイプします。これが完了すると、選択した iMessage に焦点が合い、他のすべてのメッセージは背景でぼやけます。返信を入力するためのテキスト ボックスと、チェックイン、場所、ステッカー、写真などの iMessage アプリにアクセスするための「+」アイコンが表示されます。メッセージを入力するだけで、

iPhoneでメッセージを編集する方法 iPhoneでメッセージを編集する方法 Dec 18, 2023 pm 02:13 PM

iPhone のネイティブ メッセージ アプリを使用すると、送信されたテキストを簡単に編集できます。このようにして、間違いや句読点を修正したり、テキストに適用された可能性のある間違った語句や単語を自動修正したりすることができます。この記事では、iPhone でメッセージを編集する方法を学びます。 iPhone でメッセージを編集する方法 必須: iOS16 以降を実行している iPhone。 iMessage テキストはメッセージ アプリでのみ編集でき、元のテキストを送信してから 15 分以内に限り編集できます。 iMessage 以外のテキストはサポートされていないため、取得または編集できません。 iPhone でメッセージ アプリを起動します。 [メッセージ] で、メッセージを編集する会話を選択します

メッセージを送信しましたが、相手に拒否されました。ブロックまたは削除したほうがよいでしょうか? メッセージを送信しましたが、相手に拒否されました。ブロックまたは削除したほうがよいでしょうか? Mar 12, 2024 pm 02:41 PM

1. ブラックリストに追加される: メッセージは送信されましたが、相手によって拒否されます。通常、あなたはブラックリストに登録されます。この時点で、あなたは相手にメッセージを送信できなくなり、相手もメッセージを送信できなくなります。あなたのメッセージを受信できるようになります。 2. ネットワークの問題: 受信者のネットワーク状態が悪い場合、またはネットワーク障害がある場合、メッセージが正常に受信されない可能性があります。この時点で、メッセージを再度送信する前に、ネットワークが通常に戻るのを待つことができます。 3. 相手が「おやすみ」を設定している場合: 受信者が WeChat でおやすみを設定している場合、送信者のメッセージは一定期間通知されず、表示されません。

Xiaomi Mi 14 Proをセットアップしてメッセージ画面を点灯させるにはどうすればよいですか? Xiaomi Mi 14 Proをセットアップしてメッセージ画面を点灯させるにはどうすればよいですか? Mar 18, 2024 pm 12:07 PM

Xiaomi 14Proは、優れたパフォーマンスと構成を備えたフラッグシップモデルです。正式リリース以来、高い売上を達成しています。Xiaomi 14Proの多くの小さな機能は誰もが無視するでしょう。たとえば、メッセージのために画面を点灯するように設定できます。機能は小さいですが、非常に実用的です。携帯電話を使用すると、誰もがさまざまな問題に遭遇するでしょう。それでは、Xiaomi 14Pro をメッセージ用に画面を点灯するように設定するにはどうすればよいですか? Xiaomi Mi 14 Proをセットアップしてメッセージ画面を点灯させるにはどうすればよいですか?ステップ 1: 携帯電話の設定アプリを開きます。ステップ 2: 「ロック画面とパスワード」オプションが見つかるまで下にスワイプし、クリックして入力します。ステップ 3: 「ロック画面とパスコード」メニューで、「通知のために画面をオンにする」オプションを見つけてクリックします。ステップ 4: [通知を受信したときに画面をオンにする] ページで、スイッチをオンにして有効にします。

Vivox100sの発売日が決定しました!最新ニュースを誰よりも早く知りましょう Vivox100sの発売日が決定しました!最新ニュースを誰よりも早く知りましょう Mar 22, 2024 pm 02:18 PM

Vivox100sの発売日が決定しました!最新ニュースがプレビューされました。最近、テクノロジーの世界で Vivox100 が熱狂しています。この待望の製品がついに発売日を確認し、多くの消費者やテクノロジー愛好家を興奮させています。 Vivox100s が今月末に正式にリリースされるとの報道がありますが、それはどのような驚きをもたらすのでしょうか? 待望の新製品のハイライトは何ですか? この技術的な謎を一緒に解明しましょう。 Vivox100sは、Vivoxシリーズの最新傑作として、発表以来大きな注目を集めてきました。

FaceTime を使用して iPhone ビデオメッセージを残す方法 FaceTime を使用して iPhone ビデオメッセージを残す方法 Oct 26, 2023 pm 11:25 PM

iOS 17のリリースに伴い、Appleはモバイルオペレーティングシステムに豊富な新機能、機能、機能強化を追加しました。その 1 つは、誰かが電話に出られなかった場合に、FaceTime iPhone ビデオ メッセージと音声を残せるようになったということです。メッセージを残した後、友人や家族は Apple Watch でメッセージを再生することもできるため、つながりを維持しやすくなります。 FaceTime 通話中にビデオ メッセージを残す最初のステップは、通話を開始することです。相手が電話に出ない場合は、ビデオを録画するオプションが画面に表示されます。このオプションをクリックすると、5 から 1 までのカウントダウンが開始され、その後メッセージの録音を開始できます。インターフェイスは「もう一度電話をかける」ボタンと「ビデオを録画する」ボタンを備えた使いやすいものです。

See all articles