PHP 使用RabbitMq推送消息

use PhpAmqpLib\Connection\AMQPStreamConnection;
use PhpAmqpLib\Message\AMQPMessage;
config.php 文件
"order_dispose" => ["routingKey" => "xxx","name" => "xxx",//"class" => \app\rmq\pull\xxx::class,"exchange" => ["name" => "xxx","type" => "topic", #exchange类型,可以是direct、topic、headers或fanout之一。"passive" => false, #如果设置为true,则不会创建exchange,仅检查是否存在指定名称的exchange。"durable" => true, #如果设置为true,则exchange将在重启后继续存在。"auto_delete" => false, #如果设置为true,则exchange将在最后一个绑定被删除后自动删除。"internal" => false,#如果设置为true,则exchange将用于内部用途,不允许客户端发布消息到该exchange。],/*"queue" => ["name" => "xxx", #队列名称"passive" => false, #如果为true,则不会创建队列。如果队列不存在,则会返回一个错误"durable" => true, #如果为true,则队列将被持久化。当RabbitMQ服务器重启时,队列将保留下来"exclusive" => false, #如果为true,则队列只能被当前连接使用,当连接关闭时队列将被删除。该选项通常用于创建临时队列。"auto_delete" => false, #如果设置为true,则exchange将在最后一个绑定被删除后自动删除。],*/
//实现方式/*** @throws \Exception*/
public static function publisherMessage($data)
{// json格式数据$msgBody = json_encode($data);// 日志记录Log::info("rabbitmq推送订单信息" . $msgBody);try {$config = config('rabbitmq.AMQP');// 创建连接和通道$connection = new AMQPStreamConnection($config["host"], $config["port"], $config["user"], $config["password"], $config["vhost"], false, 'AMQPLAIN', null, 'en_US', 30, 60, null, false, 30);$channel = $connection->channel();// 声明交换机$listen_config = config("rabbitmq.Listening.order_dispose");$channel->exchange_declare($listen_config["exchange"]["name"], $listen_config["exchange"]["type"], $listen_config["exchange"]["passive"], $listen_config["exchange"]["durable"], $listen_config["exchange"]["auto_delete"], $listen_config["exchange"]["internal"]);// 创建消息$properties = ['content_type' => 'application/json', 'delivery_mode' => AMQPMessage::DELIVERY_MODE_PERSISTENT];$msg = new AMQPMessage($msgBody, $properties);// 发送消息到交换机$channel->basic_publish($msg, $listen_config["exchange"]["name"], $listen_config["routingKey"]);//echo " [x] Sent '$msgBody'\n";// 关闭通道和连接$channel->close();$connection->close();} catch (\Exception $e) {Log::info("MQ推送订单数据失败,订单信息:" . $msgBody . ',错误信息:' . $e->getMessage());}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/865286.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

苹果再出新招:macOS15 Beta2预览版更新,居然还有iPhone镜像功能

在数字化时代,操作系统的更新迭代是技术进步的显著标志。苹果公司以其一贯的创新精神,不断推动着个人计算体验的边界。 2024年6月25日,苹果公司向Mac电脑用户推出了macOS 15开发者预览版Beta 2更新,这不仅是对macOS系统的一次重大…

logback janinoEventEvaluator expression 实例

参考&#xff1a;logback 日志 mysql logback 日志过滤_mob64ca140d2323的技术博客_51CTO博客 <!-- 控制台日志配置 --><appender name"CONSOLE" class"ch.qos.logback.core.ConsoleAppender"><filter class"ch.qos.logback.core.fil…

RSA加密中可加密数据的长度

在RSA加密算法中&#xff0c;要编码的最大块大小取决于所选择的密钥长度。一般来说&#xff0c;RSA密钥长度可以是1024位、2048位或者4096位。 对于1024位密钥&#xff0c;最大块大小为117字节。这意味着&#xff0c;当使用1024位密钥时&#xff0c;您可以加密的最大数据块为1…

Linux开发:fork进程时避免产生僵尸进程

僵尸进程是指fork后的子进程在完成自己的工作后退出了,但是父进程却没有通过wait/waitpid获取子进程的退出码,这时子进程的资源还不能完全释放,因为需要等待父进程的回收,这时子进程就成为了僵尸进程: #include <iostream> #include <sys/types.h> #include …

【探索Linux】P.36(传输层 —— TCP协议段格式)

阅读导航 引言一、TCP段的基本格式二、控制位详细介绍三、16位接收窗口大小⭕窗口大小的作用⭕窗口大小的限制⭕窗口缩放选项⭕窗口大小的更新⭕窗口大小与拥塞控制 四、紧急指针温馨提示 引言 在上一篇文章中&#xff0c;我们深入探讨了一种无连接的UDP协议&#xff0c;它以其…

14-14 商业领域的人工智能革命

在商业技术领域&#xff0c;对话式人工智能已获得广泛认可和使用&#xff0c;产生了重大而直接的影响。GPT-2 和 GPT-3 等大型语言模型一直是该领域的基础&#xff0c;但它们的高级继任者将对话界面推向了新的高度。这些较新的模型不仅仅是处理输入&#xff1b;它们旨在完美地集…

RK3568驱动指南|第十六篇 SPI-第188章 mcp2515驱动编写:复位函数

瑞芯微RK3568芯片是一款定位中高端的通用型SOC&#xff0c;采用22nm制程工艺&#xff0c;搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码&#xff0c;支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU&#xff0c;可用于轻量级人工…

Python 学习中,什么是字符串,如何处理字符串?

1. 什么是字符串 在Python中&#xff0c;字符串&#xff08;String&#xff09;是一种数据类型&#xff0c;用于表示文本数据。字符串由一系列字符组成&#xff0c;可以包括字母、数字、符号和空格等。字符串在Python中使用单引号&#xff08;&#xff09;或双引号&#xff08…

[数据结构] --- 树

1 树的基本概念 1.1 树的定义 树是n(n>0)个结点的有限集。当 n 0 时&#xff0c;称为空树。在任意一棵树非空树中应满足&#xff1a; (1) 有且仅有一个特定的称为根 (root) 的结点&#xff1b; (2) 当 n > 1 时&#xff0c;其余结点可分为m(m>0)个互不相交的有限集…

GDB 远程调试简介

文章目录 1. 前言2. GDB 远程调试2.1 准备工作2.1.1 准备 客户端 gdb 程序2.1.2 准备 服务端 gdbserver2.1.3 准备 被调试程序 2.2 调试2.2.1 通过网络远程调试2.2.1.1 通过 gdbserver 直接启动程序调试2.2.1.2 通过 gdbserver 挂接到已运行程序调试 2.2.2 通过串口远程调试2.2…

如何快速申请免费SSL证书,实现网站HTTPS安全传输

随着互联网技术的飞速发展&#xff0c;网络安全已成为不可忽视的重要议题。HTTPS协议&#xff0c;作为HTTP协议的安全版本&#xff0c;通过SSL协议加密客户端与服务器之间的数据传输&#xff0c;从而保障信息在传输过程中的安全性。对于网站运营者而言&#xff0c;为网站部署SS…

Stream toArray 好过collect

toArray 比collect 更好用&#xff0c;这样就不需要判断Null。 if(_user.getUserRole()!null) {_user.setRole(_roleList.stream().filter(_e->_e.getRoleId()_user.getUserRole()).toArray(Role[]::new)[0]); } if(_user.getUserRole()!null) {_user.setRole(_roleList.s…

违规停放智能监测摄像机

对于现代城市管理来说&#xff0c;违规停放智能监测摄像机正逐渐成为解决交通拥堵和城市管理难题的重要工具。这类摄像机通过先进的视觉识别和数据分析技术&#xff0c;有效监控和管理道路上的车辆停放行为&#xff0c;对提升城市交通运行效率和改善市民出行环境具有显著的意义…

三代测序PacBioONT reads过滤和修剪-Chooper

chopper简介 chopper是NanoFilt和NanoLyse的Rust语言版本&#xff0c;适用于长reads测序&#xff08;如PacBio和纳米孔测序ONT&#xff09;的过滤和修剪fastq文件。 chopper相对于python编写的NanoFilt和NanoLyse&#xff0c;运行输出相同结果的时间更短&#xff0c;且NanoFi…

思维,CF 739A - Alyona and mex

一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 739A - Alyona and mex 二、解题报告 1、思路分析 我们考虑区间mex运算的值最大也就是区间长度&#xff0c;所以我们最大值的上界就是所有区间中的最小长度&#xff0c;假如记为mi 我们一定可以构造出答案…

开启IT世界的第一步:高考新生的暑期学习指南

目录 前言 了解IT领域 学习编程语言 实践项目 学习资源 阅读专业书籍 培养良好的学习习惯 结语 最后 - 投票 前言 七月的钟声敲响&#xff0c;各省的高考分数已揭晓&#xff0c;意味着一段紧张而又充满奋斗的旅程画上了句号。然而&#xff0c;高考的结束并不意味…

Java 泛型:上界通配符和下界通配符的用途和限制

Java 泛型&#xff1a;上界通配符和下界通配符的用途和限制 Java泛型中的上界通配符&#xff08;<? extends T>&#xff09;和下界通配符&#xff08;<? super T>&#xff09;是两个强大的工具&#xff0c;它们在不同的场景中各自发挥重要作用。理解它们的用途和…

zabbix 配置钉钉告警

1.申请一个钉钉企业版 2.群内申请一个机器人 下载电脑版钉钉&#xff0c;登录后&#xff0c;在要接收群消息的群里&#xff0c;点击右上角设置图标&#xff0c;下滑找到机器人&#xff0c;添加一个机器人&#xff0c;保存机器人的webhook地址 保存这里的加签字符串 保存这里的…

通信软件开发之业务知识:PON口割接什么意思?

一 PON口割接&#xff08;原创总结&#xff09; 在通信领域&#xff0c;PON口割接指的是对无源光网络&#xff08;Passive Optical Network&#xff0c;PON&#xff09;端口进行的切换或调整操作。简单来说&#xff0c;就是对光纤网络中的某个端口进行重新连接或重新分配&…

153. 寻找旋转排序数组中的最小值(中等)

153. 寻找旋转排序数组中的最小值 1. 题目描述2.详细题解3.代码实现3.1 Python3.2 Java 1. 题目描述 题目中转&#xff1a;153. 寻找旋转排序数组中的最小值 2.详细题解 如果不考虑 O ( l o g n ) O(log n) O(logn)的时间复杂度&#xff0c;直接 O ( n ) O(n) O(n)时间复杂…