问题的根本原因是amqpcpp4.3.17与rabbitmq 3.8之间的不兼容。如果服务器端开启内存限制(默认情况下),则会导致amqpcpp 4.3.17表现出低吞吐量。 解决方法是使用amqpcpp4.1.7版本,该版本与rabbitmq 3.8兼容,并且没有低吞吐量的问题。
以下是使用amqpcpp4.1.7的示例代码:
//连接到RabbitMQ服务器 AMQP::TcpAddress address("amqp://guest:guest@localhost:5672/"); AMQP::TcpConnection connection(address);
//创建一个频道 AMQP::TcpChannel channel(&connection);
//声明一个队列 channel.declareQueue("test");
//定义要发送的消息 AMQP::Message message("test message");
//将消息发送到队列 channel.publish("", "test", message);
//从队列中获取消息 AMQP::Envelope envelope; channel.basicConsume("test") .onReceived([&](const AMQP::Message& message, uint64_t deliveryTag, bool redelivered) { //处理收到的消息 //...
//确认消息已经收到
channel.basicAck(deliveryTag);
});
while(true) { //等待消息 connection.processEvent(); }