草庐IT

RabbitMQ

全部标签

javascript - 仅当监听器存在时才发布消息?

使用RabbitMQ,我希望我的(PHP)代码仅在该特定用户当前正在收听时才向该特定客户发布消息。原因是我连接的用户将打开一个websocket,它将等待来自RabbitMQ的通知并在通知到达时更新UI。但是当他们第一次加载页面时,所有之前的通知都会被加载,所以不需要重新加载队列中的通知。作为消息队列的新手,我不知道是否可行,但我希望我的发布者检查用户ID=X当前是否正在监听(因为websocket将在执行时打开一个channel),以及是否他目前正在收听,发布一条消息。如果他不是,则不会发布该消息(但将其添加到数据库中)。工作流程是这样的:发布者:端点正在接收事件将事件保存在数据库中

PHPUnit RabbitMQ : write test for create connection function

我面临以下问题。我写了一个函数,它在给定所需参数的情况下创建一个连接对象(AMQPConnection)。现在想写相应的单元测试。如果没有运行RabbitMQ代理,我只是不知道该怎么做。这是有问题的功能:publicfunctiongetConnection($hostKey,array$params){$connection=null;try{$connection=newAMQPConnection($params['host'],$params['port'],$params['username'],$params['password'],$params['vhost']);//

php - 我在哪里可以找到 php-amqp 文档?

我们计划从PHP使用RabbitMQ,我们决定使用php-amqp,因为它支持PHP5.2。唯一的问题是我找不到这个PECL库的合适文档 最佳答案 遗憾的是,官方php-amqp文档(http://us1.php.net/manual/en/book.amqp.php)已被删除,因为它已过时。现在你可以浏览stubfiles和tests.我真的很抱歉,我们还没有编写适当的文档和示例。如果您对php-amqp有进一步的疑问扩展程序随时可以在这里发布更多问题或亲自与我联系。 关于php-我在

php - rabbitmq AMQP::消费()

AMQP函数consume()是一个带有回调的阻塞函数,是否可以为consume()函数设置超时,以便在特定时间后不再阻塞并且代码执行完成? 最佳答案 是的,方法如下:$amqp=newAMQPConnection($your_connection_params);$amqp->setTimeout($seconds);然后,当您在队列上调用consume()时,如果在超时期限内没有消息到达,则会从consume()中抛出AMQPException并显示消息“Resourcetemporaryunavailable”。如果您曾经中断

PHP AMQP Consume() fork 做实际工作

我正在寻找一个从RabbitMQ队列消费(使用PECLAMQP模块)然后fork以完成实际工作的PHP脚本。我有代码@https://gist.github.com/giggsey/6666e67bb0e090eeb5f0但是当我运行它时,我得到:11296Key:USER.12392ObjectLength:74Forked11296at2013-03-1914:16:2211277ack()PHPFatalerror:Uncaughtexception'AMQPConnectionException'withmessage'Connectionresetbypeer'intmp/f

php - 连接时rabbitmq错误

当我尝试使用php-amqp连接时出现此错误:fatalerror:在中找不到类“AMQPConnection”$credentials=array('host'=>'localhost','port'=>5672);$cnn=newAMQPConnection($credentials);$cnn->connect(); 最佳答案 您似乎没有AMQPPECLextension安装。PECL扩展不是PHP的默认部分,因此您需要使用pecl工具编译和安装它。 关于php-连接时rabbit

php - 如何从 PHP 使用 RabbitMQ 延迟消息队列?

我正在尝试使用DelayedMessageQueue对于来自PHP的RabbitMQ,但我的消息只是消失了。我使用以下代码声明交换:$this->channel->exchange_declare('delay','x-delayed-message',false,/*passive,createifexchangedoesn'texist*/true,/*durable,persistthroughserverreboots*/false,/*autodelete*/false,/*internal*/false,/*nowait*/['x-delayed-type'=>['S','

php - AMQPRuntimeException : Error reading data. 收到 0 而不是预期的 7 字节

它一直在工作,但现在它不再工作了!我正在使用php-amqplib和RabbitMQ。当我尝试创建一个新的AMQP连接时:$connection=newAMQPConnection('localhost',5672,'username','password');库中导致此错误的代码是:publicfunctionread($n){$res='';$read=0;while($readsock)&&(false!==($buf=fread($this->sock,$n-$read)))){if($buf===''){continue;}$read+=strlen($buf);$res.=

php - 用于大规模任务调度的可扩展作业队列系统

关闭。这个问题不满足StackOverflowguidelines.它目前不接受答案。想改善这个问题吗?更新问题,使其成为on-topic对于堆栈溢出。1年前关闭。Improvethisquestion场景:TL;DR-我需要一个队列系统来根据future的时间戳而不是插入的顺序来触发作业我有一个条目的MySQL数据库,其中详细说明了需要执行的特定事件(主要包括一系列算术计算和数据库插入/更新),这些事件以基于时间戳的精确顺序排列。条目插入的时间与事件将“执行”的时间没有相关性,而是由外部因素决定的。该表还包含第二列毫秒,用于提高计时精度。该表是作业“队列”的一部分,其中包含设置为在f

php - 一段时间不活动后在 PHP CLI 脚本中运行函数

我将Symfony2与RabbitMqBundle一起使用创建一个将文档发送到ElasticSearch的worker。以一个接一个的速度索引文档比使用ElasticSearch批量API慢得多。因此,我创建了一个缓冲区,以数千个为单位将文档刷新到ES。代码看起来(有点简化)如下:classSearchIndexator{protected$elasticaService;protected$buffer=[];protected$bufferSize=0;//Themaximumnumberofdocumentstokeepinthebuffer.//Ifthebufferreach