我已经在我的电脑和服务器上设置了带有默认配置的rabbitmq并注意到了rabbitmq发布率的奇怪行为,无论我向Rabbitmq发布消息的速度有多快,我的电脑上的发布率都保持在12 / s和服务器这两个系统在ram和cpu的数量上有很大不同!
出于测试目的,我编写了一个超级简单的代码,将消息发布到rabbitmq上的队列中,我再次看到了12 / s的发布率!
我认为这是非常低的,发布率必须高得多。
我测试了持久和瞬态交换和消息,但结果是一样的。
如何提高发布率?
以下是代码:
<?php
for($i=1;$i<20000;$i++){
$connection = new AMQPConnection('localhost', 5672, 'guest', 'guest');
$channel = $connection->channel();
$channel->exchange_declare('test', 'direct', false, false, false);
$msg = new AMQPMessage('test '.$i);
$channel->basic_publish($msg, 'test');
$channel->close();
$connection->close();
}
&GT;
答案 0 :(得分:2)
避免每次迭代创建connection
,channel
和exchange
。代替
在迭代之前创建它们并在循环之后关闭它们。
它们的成本很高(尤其是connection
和channel
)。应创建并重用connection
和channel
。
$connection = new AMQPConnection('localhost', 5672, 'guest', 'guest');
$channel = $connection->channel();
$channel->exchange_declare('test', 'direct', false, false, false);
for($i=1;$i<20000;$i++){
$msg = new AMQPMessage('test '.$i);
$channel->basic_publish($msg, 'test');
}
$channel->close();
$connection->close();