jjzjj

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 - 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 - 将消息 TTL 设置为一小时 RabbitMQ

如何设置消息TTL(不是队列)Exchange(交换发送到多个队列)消息(发布消息时)队列(在队列本身上,但同样这是消息TTL而不是队列TTL)我正在运行RabbitMQ3.x、Symfony2.1.x和RabbitMqBundle.我尝试过的:当我从RabbitMQ管理UI创建队列时设置消息TTL我将消息属性设置为'x-message-ttl'=>3600000。在RabbitMQ配置中,它看起来像这样:{"name":"blah_queue","vhost":"foobar","durable":true,"auto_delete":false,"arguments":{'x-me

php - PECL AMQP 与 php-amqp

我即将实现一个基于PHP的系统,该系统使用RabbitMQ。我可以看出那里有2个成熟的库:PECLAMQP和php-amqp.我将同时为客户端和工作人员使用PHP。有人对这两个库有任何实际经验吗?在某些事情上一个比另一个更好吗?使用其中任何一个时有任何限制吗?哪一个更受欢迎? 最佳答案 原始答案(问题编辑前):PECLAMQP是php-amqp的文档(相当过时,顺便说一句).P.S.:在纯PHP中有amqp客户端库实现-php-amqplib不同于PHPC扩展php-amqp在某些部分,但最适合您的部分取决于您和您的需求。

java - Spring AMQP (Rabbit) 监听器在异常情况下进入循环

@BeanRabbitTemplaterabbitTemplate(){RabbitTemplatetemplate=newRabbitTemplate(rabbitConnectionFactory());template.setMessageConverter(messageConverter);template.setExchange(amqpProperties.getRabbitMqTopicExchangeName());returntemplate;}@Bean@Conditional(OperationsCondition.class)SimpleMessageList

java - 关键的 RabbitMQ 方法参数

我正在尝试阅读并理解RabbitMQJava客户端中的3个基本方法:Channel#basicConsumeChannel#basicPublish;和DefaultConsumer#handleDelivery这些方法有几个晦涩难懂的参数,尽管Javadocs确实提供了关于它们是什么的一些解释,但对于这些参数的作用并没有真正说清楚/显而易见:channel#basicConsumeconsumerTag-用于建立上下文的客户端生成的消费者标签noLocal-如果服务器不应将发布在该channel连接上的消费者消息传递给该消费者,则为真exclusive-如果这是独家消费者则为真arg

java - RabbitMQ 暂停队列消费

保留持久队列及其绑定(bind)但暂停其消费者的最佳方法是什么?用例是:如果我们不断收到一堆我们无法处理的消息(例如数据库已关闭或模式问题),我想“让它崩溃”并停止处理消息,但我想继续聚合到队列中。即允许发布但暂停消费。我可以想到三种解决方案:我可以让绑定(bind)到队列的所有消费者不断拒绝消息并重新排队,但这是一种资源浪费,更不用说我已经以编程方式执行上述逻辑。我可以对所有消费者调用basic.cancelConsumer(见下文)或以spring-amqp表示我想我可以在所有SimpleMessageListenerContainers上调用shutdown绑定(bind)到队列

java - 我如何知道我的消息已通过 spring amqp 成功发送?

我正在使用RabbitTemplate类使用springamqp写入RabbitMQ队列。我使用convertAndSend方法将消息发送到队列。这在正常情况下运行良好,但如果队列不存在,它似乎会无提示地失败。没有异常被抛出,也没有错误/调试消息记录到记录器。确保消息已送达的最佳方式是什么?这是代码当前正在执行的操作的示例。RabbitTemplatetemplate=newRabbitTemplate(factory);template.setQueue(queueName);template.setRoutingKey(queueName);template.convertAndS

java - Spring AMQP RabbitMQ 实现优先级队列

谷歌几天后,我相信我完全迷路了。我想实现一种具有大约3个队列的优先级队列:高优先级队列(每日),需要首先处理。中等优先级队列(每周),如果队列#1中没有项目,它将处理。(这个队列中的消息没问题,它根本不会处理)低优先级队列(每月),如果队列#1和#2中没有项目,它将处理。(这个队列中的消息没问题,它根本不会处理)最初我有以下流程,让消费者消费来自所有三个队列的消息并检查队列#1、#2和#3中是否有任何项目。然后我意识到这是错误的,因为:我完全迷失了一个问题:“我怎么知道它来自哪个队列?”。我已经在使用来自任何队列的消息,所以如果我从较低优先级队列中获取一个对象,如果我发现较高优先级队列