RabbitMQ简单使用

composer require maweibinguo/easyrabbitmq

1、推送消息

1-1、推送消息到直连交换机

$config = [

    "host" => "127.0.0.1",

      "port" => "5672",

      "user" => "guest",

      "password" => "guest",

      "vhost" => "/",

      "channel_max_num" => 10,

]; 

$instance = RabbitMq::getInstance($config);

//延迟消息,30 秒中后才会到达指定的交换机

$instance->pushToDirect(

                  $msg = time(), //消息体内容

                  $exchange = "easy_direct_exchange", //交换机名称

                  $routingKey = "direct_test_queue", //消息的routingKey,consume(get) 方法到bingdingKey 要和routingKey保持一致

                  $delaySec = 30 //延迟秒数

);

//无延迟,推入到指定到直链交换机

$instance->pushToDirect(

                  $msg = time(), //消息体内容

                  $exchange = "easy_direct_exchange", //交换机名称

                  $routingKey = "direct_test_queue", //消息的routingKey,consume(get) 方法到bingdingKey 要和routingKey保持一致

);

1-2、推送消息到扇形交换机

$config = [

    "host" => "127.0.0.1",

      "port" => "5672",

      "user" => "guest",

      "password" => "guest",

      "vhost" => "/",

      "channel_max_num" => 10,

]; 

$instance = RabbitMq::getInstance($config);

//延迟消息,30 秒中后才会到达指定的交换机

$instance->pushToFanout(

                  $msg = time(), //消息体内容

                  $exchange = "easy_fanout_exchange", //交换机名称

                  $delaySec = 30 //延迟秒数

);

//无延迟,推入到指定到直链交换机

$instance->pushToFanout(

                  $msg = time(), //消息体内容

                  $exchange = "easy_fanout_exchange" //交换机名称

);

1-3、推送消息到主题交换机

$config = [

    "host" => "127.0.0.1"

      "port" => "5672",

      "user" => "guest",

      "password" => "guest",

      "vhost" => "/",

      "channel_max_num" => 10,

]; 

$instance = RabbitMq::getInstance($config);

//延迟消息,30 秒中后才会到达指定的交换机

$instance->pushToTopic(

                  $msg = time(), //消息体内容

                  $exchange = "easy_topic_exchange", //交换机名称

                  /**

                  * routingKey 要同consum(get)方法的bindingKey相匹配

                  * bindingKey支持两种特殊的字符"*"、“#”,用作模糊匹配, 其中"*"用于匹配一个单词、“#”用于匹配多个单词(也可以是0个)

                  * 无论是bindingKey还是routingKey, 被"."分隔开的每一段独立的字符串就是一个单词, easy.topic.queue, 包含三个单词easy、topic、queue

                  */

                  $routingKey = "easy.topic.queue",

                  $delaySec = 30 //延迟秒数

);

//无延迟,推入到指定到直链交换机

$instance->pushToTopic(

                  $msg = time(), //消息体内容

                  $exchange = "easy_topic_exchange", //交换机名称

                  $routingKey = "easy.topic.queue" 

);

2、消费消息

2-1、订阅模式

订阅模式下的可靠消费

$config = [

    "host" => "127.0.0.1",

      "port" => "5672",

      "user" => "guest",

      "password" => "guest",

      "vhost" => "/",

      "channel_max_num" => 10,

]; 

$instance = RabbitMq::getInstance($config);

$instance->consume(

      $queueName = "direct_test_queue",//订阅的队列名称

      $consumerTag = "c1",//消费标记

      $exchange = "easy_direct_exchange",//交换机名称

      $bindingKey = "direct_test_queue",//bindingkey,如果是直链交换机需要同routingKey保持一致

      $callback = function($msg){

          $body = $msg->body;

          file_put_contents("./test.log", "time => " . time() . "\t" . " body => " . $body . PHP_EOL , FILE_APPEND);

          //如果返回结果不绝对等于(===)true,那么将触发消息重试机制

          return false;

      },

      //5次消费消费失败后,失败消息将会投递到的队列名称

      $failedQueue = "easymq@failed"

);

2-2、拉取模式

拉取模式下的可靠消费

$config = [

    "host" => "127.0.0.1"

      "port" => "5672",

      "user" => "guest",

      "password" => "guest",

      "vhost" => "/",

      "channel_max_num" => 10,

]; 

$instance = RabbitMq::getInstance($config);

$instance->get(

      $queue = "get_queue",

      $exchange = "easy_fanout_exchange",

      $bindingKey = "",

      $callback = function($msg){

          $body = $msg->body;

          file_put_contents("./test.log", "time => " . time() . "\t" . " body => " . $body . PHP_EOL , FILE_APPEND);

          //如果返回结果不绝对等于(===)true,那么将触发消息重试机制

          return false;

      },

      //5次消费消费失败后,失败消息将会投递到的队列名称

      $failedQueue = 'easymq@failed'

);

你可能感兴趣的:(RabbitMQ简单使用)