资讯专栏INFORMATION COLUMN

php 使用rabbitmq 踩坑记录

leiyi / 1338人阅读

摘要:当关闭的时候,队列将被删除。空是自动删除绑定队列和交换机,生成发送消息到队列持久化,重启不会丢失,默认为,重启会丢失

环境

1.安装rabbit

php使用
安装包,直接安装composer 安装php-amqplib/php-amqplib 这个包
生产着

连接mq server

require_once __DIR__."/vendor/autoload.php";
use PhpAmqpLibConnectionAMQPStreamConnection;
use PhpAmqpLibExchangeAMQPExchangeType;
use PhpAmqpLibMessageAMQPMessage;

$connection = new AMQPStreamConnection("127.0.0.1", 5672, "guest", "guest", "yedong_test");  //连接server
$channel = $connection->channel(); //创建通道

创建交换机

$exchange="example_direct_exchange";
/*
name: $exchange
type: fanout  交换机类型
passive: false // don"t check if an exchange with the same name exists 
durable: false // the exchange won"t survive server restarts  //是否是持久化
auto_delete: true //the exchange will be deleted once the channel is closed. 
*/
$channel->exchange_declare($exchange, AMQPExchangeType::DIRECT, false, true, true);

3.创建队列

//参数
        $queue = "",   //队列名称
        $passive = false, //检查是否村子啊
        $durable = false, //是否持久化
        $exclusive = false, //排外,①当前定义的队列是connection的channel是共享的,其他的connection是访问不到的。②当connection关闭的时候,队列将被删除。
        $auto_delete = true, //空是自动删除
        $nowait = false,     //
        $arguments = array(),
        $ticket = null
        
![clipboard.png](/img/bVbrPP9)

$channel->queue_declare("test_queue_3",true,true,false,false,false,[],null);

4.绑定队列和交换机,生成routing_key

$channel->queue_bind("example_direct_queue_2",$exchange,"routeTest1");

5.发送消息到队列

![clipboard.png](/img/bVbrPRr)

$msg = new AMQPMessage($i, ["content_type" => "text/plain","delivery_mode"=>2]); //2:持久化,重启不会丢失,默认为1,重启会丢失
$channel->basic_publish($msg, $exchange,"routeTest1");

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/31311.html

相关文章

  • Java 类文章 - 收藏集 - 掘金

    摘要:而调用后端服务就应用了的高级特分布式配置管理平台后端掘金轻量的分布式配置管理平台。关于网络深度解读后端掘金什么是网络呢总的来说,网络中的容器们可以相互通信,网络外的又访问不了这些容器。 在 Java 路上,我看过的一些书、源码和框架(持续更新) - 后端 - 掘金简书 占小狼转载请注明原创出处,谢谢!如果读完觉得有收获的话,欢迎点赞加关注 物有本末,事有终始,知所先后,则近道矣 ......

    RayKr 评论0 收藏0
  • mac 安装php的amqp扩展失败(mkdir:../pecl:no such file or d

    摘要:安装上使用安装,会把的环境一同装上,首先更新然后再在此处直接安装的时候会出现下载失败的情况,反复尝试多次,并且修改了清华的镜像之后也不管用。 RabbitMQ 安装 mac上使用homebrew安装rabbitmq,会把Erlang的环境一同装上,首先更新homebrew brew update 然后再 brew install rabbitmq 在此处直接安装rabbitmq的时候会...

    zhonghanwen 评论0 收藏0
  • RabbitMQ+PHP 教程三(Publish/Subscribe)

    摘要:在客户端中,当我们将队列名称作为空字符串提供时,我们创建一个带有生成名称的非持久队列方法返回时,变量包含一个随机生成的队列名称。交换和队列之间的关系称为绑定。 使用 php-amqplib 介绍 在前面的教程中,我们创建了一个工作队列。工作队列背后的假设是每个任务都交付给一个工作人员处理。在这一部分中,我们将做一些完全不同的事情——我们将向多个消费者发送消息。此模式称为发布/订阅。 ...

    Neilyo 评论0 收藏0
  • RabbitMQ使用

    摘要:的定义是使用语言开发的开源消息队列系统,完整的实现了高级抽象层消息通信协议。交换机接受发送的消息,并根据绑定规则转发到对应的队列。默认是无名交换使用空字符串标识。消息队列是内部对象,用于存储未被消费的消息。 RabbitMQ的定义 RabbitMQ是使用erlang语言开发的开源消息队列系统,完整的实现了AMPQ(高级抽象层消息通信协议)。 Mac下RabbitMQ安装 使用Hom...

    codeKK 评论0 收藏0
  • PHP-RabbitMQ学习日记(一)

    摘要:通道,建立一个访问通道。队列,每个消息都会被投入到一个或多个队列。路由,根据这个关键字进行消息投递。消息消费者,就是接受消息的程序。 给自己做一个记录 本文主要介绍有一下 1.RabbitMQ是概念 2.RabbitMQ在windows上安装,启动,关闭 3.RabbitMQ其他小介绍 下面一步一步走起来 1.RabbitMQ是概念 RabbitMQ是一个建立在AMQP(高级消息队列协...

    SolomonXie 评论0 收藏0

发表评论

0条评论

leiyi

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<