首页 > 编程语言 >rabbitmq php 发送延迟消息 java 进行消费

rabbitmq php 发送延迟消息 java 进行消费

时间:2023-07-27 19:11:09浏览次数:71  
标签:false delayed rabbitmq connection msg java php channel

 

 

// ------- 延迟队列 php 需要安装好几个扩展  php 生产者
$connection = new AMQPStreamConnection('xxxxx', 5672, 'guest', 'guest');
$channel = $connection->channel();

// 发送消息到交换机,并设置 x-delay 属性

$messageData = ['msg' => json_encode(['a'=>111])];
$messageBody = json_encode($messageData);
$headers = ['x-delay' => 10000]; // 10 秒延迟
$message = new AMQPMessage($messageBody, [
'delivery_mode' => AMQPMessage::DELIVERY_MODE_PERSISTENT,
'application_headers' => new \PhpAmqpLib\Wire\AMQPTable(['x-delay' => $headers['x-delay']])
]);


// 推送延迟消息到延迟交换机
$channel->basic_publish($message, 'delayed-exchange', 'delayed-queue');

// 关闭连接
$channel->close();

$connection->close();       // php 消费者 单独一个文件  php -d display_errors=on mq.php 这个命令可以查看具体报错信息等错误 <?php

require __DIR__ . '/vendor/autoload.php';

// 消费者进行消费 需要这个扩展 "php-amqplib/php-amqplib": "*",

use PhpAmqpLib\Connection\AMQPStreamConnection;

$connection = new AMQPStreamConnection('xxxxx', 5672, 'guest', 'guest');
$channel = $connection->channel();

$channel->queue_declare('delayed-queue', false, false, false, false);

echo " [*] Waiting for messages. To exit press CTRL+C\n";

$callback = function ($msg) {
echo ' [x] Received ', $msg->body, "\n";
sleep(substr_count($msg->body, '.'));
echo " [x] Done\n";
$msg->ack();
};

$channel->basic_qos(null, 1, null);
$channel->basic_consume('delayed-queue', '', false, false, false, false, $callback);

while ($channel->is_open()) {
$channel->wait();
}

$channel->close();
$connection->close();

    // java 消费者   @RabbitListener(queues = "delayed-queue")
public void receiveDelayedMessage(Map<String, String> message) {
  String msg = message.get("msg");
  System.out.println("Received delayed message: " + msg);
}                  

标签:false,delayed,rabbitmq,connection,msg,java,php,channel
From: https://www.cnblogs.com/huliangqing/p/17585807.html

相关文章

  • String转Map java
    String转Mapjava实现步骤1.理解需求在开始编写代码之前,我们需要明确我们的需求是什么。在这个任务中,我们需要将一个字符串转换为一个Java中的Map对象。字符串的格式可能是键值对的形式,比如"key1=value1;key2=value2",我们需要将其转变为一个Map对象,其中键是字符串中的键名,而值是......
  • 在Java和C#中计算SHA-1哈希
    Java版本:publicvoidtestHash(){Stringpassword="Test";byte[]key=password.getBytes();MessageDigestmd=MessageDigest.getInstance("SHA-1");byte[]hash=md.digest(key);Stringresult="";for(byteb:hash){res......
  • C#与Java互通AES算法加密解密
    C#需要引用System.Security.Cryptography命名空间///<summary>AES加密</summary>///<paramname="text">明文</param>///<paramname="key">密钥,长度为16的字符串</param>///<paramname="iv">偏移量,长度为16的字符串<......
  • 深入研究java.lang.ThreadLocal类
    Synchronized用于线程间的数据共享,而ThreadLocal则用于线程间的数据隔离。一、概述ThreadLocal是什么呢?其实ThreadLocal并非是一个线程的本地实现版本,它并不是一个Thread,而是threadlocalvariable(线程局部变量)。也许把它命名为ThreadLocalVar更加合适。线程局部变量(ThreadLocal)......
  • android studio javadoc 生成
    AndroidStudioJavadoc生成教程介绍在Android开发中,Javadoc是一种用于生成API文档的工具。通过使用Javadoc,可以为自己的代码生成详细的文档,方便团队协作和代码维护。本教程将介绍如何在AndroidStudio中生成Javadoc。流程下面是生成Javadoc的流程,你可以按照这些步骤来实现:......
  • 学习Java的第7天
    数据类型强类型语言(安全性高-速度慢)要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用弱类型语言(安全性低--速度快) Java的数据类型分为两大类基本类型(primitivetype)//**八大基本数据类型**//**整数**intnum1=10;//**最常用**bytenum2=20;......
  • JavaScript中的MAP对象
    MAP对象,存储格式为键值对。和普通对象无异,不过它的方法要特殊一些。constmap=newMap();//createdmap.set(key,value);//赋值map.get(key);//读取map.delete(key);//删除指定键值map.clear();//删除所有键值对MAP对象主要用于频繁进行赋值删除时,会有更好的性能,同......
  • PhpStorm 2023 for Mac永久激活版下载(免登陆版)
    Phpstorm是一款由JetBrAIns开发的PHP集成开发环境(IDE)。它提供了许多功能来简化PHP应用程序开发,包括代码编辑、调试、代码分析、测试和版本控制等。PhpStorm2023forMac永久激活版下载 以下是Phpstorm的一些主要特点:代码编辑器:Phpstorm具有智能代码编辑器,支持语法高亮、代......
  • 运行 'Tomcat 8.5.31' 出错: 无法打开调试器端口 (127.0.0.1:62511): java.net.Socket
    多个中间件占用一个端口,修改端口  ......
  • 有关java语法的一些细节(与c++比较)
    与c++不同,java不支持方法参数的默认值设置,因此若有此需要,可以使用重载的方式去实现,如:publicclassTest{publicintfunc(inta,Stringb){//TODO}publicintfunc(){returnfunc(0,newString("defult"));}...}java中类型转换都......