首页 > 编程语言 >php扩展 rabbitmq

php扩展 rabbitmq

时间:2022-10-15 12:44:37浏览次数:60  
标签:name exchange 队列 扩展 rabbitmq queue 交换机 msg php

<?php
// 建立TCP连接对象
$connection = new AMQPConnection([
    'host' => '127.0.0.1',
    'port' => '5672',
    'vhost' => '/',
    'login' => 'guest',
    'password' => 'guest'
]);
$exchange_name="leo.direct";//交换机名称
$queue_name="leo_queue";//队列名称
$routing_key="leo_router";
$connection->connect();//链接rabbit 服务器
$channel = new AMQPChannel($connection);//创建通道
$channel->qos(0,2);
$queue = new \AMQPQueue($channel);//创建消息队列
$queue->setName($queue_name);//设置消息队列的名称
$queue->setFlags(AMQP_DURABLE);//设置消息队列持久化(消息要想持久化,交换机和消息队列必须要持久化)
$queue->declareQueue();//声明消息队列
$queue->bind($exchange_name, $routing_key);//绑定交换机在队列路由
// 消费队列消息
$queue->consume(function ($envelope,$queue){
        $msg = $envelope->getBody();
        var_dump("Received: " . $msg);
        $queue->ack($envelope->getDeliveryTag()); // 手动发送ACK应答
    });

  二、消费者

<?php
// 建立TCP连接对象
$connection = new AMQPConnection([
    'host' => '127.0.0.1',
    'port' => '5672',
    'vhost' => '/',
    'login' => 'guest',
    'password' => 'guest'
]);
$exchange_name="leo.direct";//交换机名称
$queue_name="leo_queue";//队列名称
$routing_key="leo_router";
$connection->connect();//链接rabbit 服务器
$channel = new AMQPChannel($connection);//创建通道
$channel->qos(0,2);
$exchange = new AMQPExchange($channel);//创建交换机
$exchange->setName($exchange_name);//设置交换机名称
$exchange->setType(AMQP_EX_TYPE_DIRECT);//设置交换机类型
$exchange->setFlags(AMQP_DURABLE);//设置交换机持久化
$exchange->declareExchange();//声明交换机
$queue = new \AMQPQueue($channel);//创建消息队列
$queue->setName($queue_name);//设置消息队列的名称
$queue->setFlags(AMQP_DURABLE);//设置消息队列持久化(消息要想持久化,交换机和消息队列必须要持久化)
$queue->declareQueue();//声明消息队列
$queue->bind($exchange_name, $routing_key);//绑定交换机在队列路由
$msg=['msg'=>"hello world",'code'=>200,'datetime'=>date('Y-m-d H:i:s')];//发送的消息
$msgBody = is_array($msg)?json_encode($msg):$msg;
$exchange->publish($msgBody,$routing_key,AMQP_NOPARAM,array('delivery_mode' => 2));

 

标签:name,exchange,队列,扩展,rabbitmq,queue,交换机,msg,php
From: https://www.cnblogs.com/leo0362/p/16793932.html

相关文章

  • Jmeter扩展组件:图形监视器-PerfMon (Servers Performance Monitoring)
    1、是什么用于监听服务器CPU、IO、网络等各项指标的组件2、如何实现Jmeter​本身不具备该功能,需要下载第三方实现在服务器端安装监听程序,在测试机端安装接收程序监听程序:Ser......
  • RabbitMQ高可用--镜像队列的原理
    简介说明    本文介绍RabbitMQ的镜像队列的原理。镜像队列可以保证RabbitMQ的高可用,防止消息丢失。什么是镜像队列        镜像队列(MirrorQueue):将队列复......
  • Codeforces Round #747 (Div. 2) D // 扩展域并查集
    题目来源:CodeforcesRound#747(Div.2)D-TheNumberofImposters题目链接:Problem-D-Codeforces题意有\(n\)个人,每个人拥有\(imposter\)或\(crewmate\)的身份......
  • 3125. 扩展BSGS
    题目链接3125.扩展BSGS给定整数\(a,p,b\)。求满足\(a^x≡b\pmodp\)的最小非负整数\(x\)。输入格式每个测试文件中最多包含\(100\)组测试数据。每组数据中,每......
  • PHPCMS V9 密码加密传输 密码以明文形式传输
    最近经常遇到用户求助,被安全检测查出密码没有进行加密传输,如图: 被检测出这个问题的大多是后台登录,这个问题解决方法如果按照修复建议来讲的话是比较麻烦的!用户输入......
  • PHP函数基础简章
    $_GET变量PHP$_GET变量在PHP中,预定义的$_GET变量用于收集来自method="get"的表单中的值。$_GET变量预定义的$_GET变量用于收集来自method="get"的表单中......
  • php函数复习
    $c=(array)json_decode(@$_GET['c']);//数组里面包含元素m:2023n是array的元素个数为0第0个元素是arrayif(is_array($c)&&!is_numeric(@$c["m"])&&$c["m"]>2022)......
  • PHP下载文件、创建多个文件
    php创建文件的方法有很多种我们最常用的就是 fopen,file_put_contents这两种方法来创建文件了,下面我来给大家详细介绍介绍,有需要了解的同学可参考。创建php文件利用......
  • php简单实现 远程图片 上传
     思路:服务器A:上传文件,获取临时路径,然后获取base64字符串,将base64字符串发给服务器B服务器B:接受base64字符串,转码后使用file_put_contents添加到文件内,即可实......
  • thinkphp5.1全局验证层封装
    1.在很多场景下我们都要对表单提交的数据进行验证,那么如何实现一个验证的重复使用呢,那就让我们来封装一个全局的验证层吧!首先我们创建validate,如下图这样,我们文件夹下就出现......