使用大量cpu的spring-rabbit客户端

时间:2015-05-31 03:12:57

标签: java rabbitmq spring-amqp spring-rabbit

我在c3large机器上运行ec2中的spring-boot应用程序。它初始化了一个spring-rabbit客户端,它启动了自己的线程。

在使用YourKit分析我的应用程序之后,我发现在兔子客户端线程中花了很多时间,在com.rabbitmq.client.impl.AMQConnection$MainLoop.run()内特别向下java.io.DataStream.readUnsignedByte()

对我来说,看起来有一个while循环不断阻止从RabbitMQ服务器获取套接字上的输入。

有没有人碰到这个?我是否正确阅读了分析结果?有没有办法让amqp客户端无阻塞?

1 个答案:

答案 0 :(得分:3)

该代码(com.rabbitmq.client)位于Spring AMQP使用的基础amqp-client(RabbitMQ Java客户端)代码中。

  

对我来说,看起来有一个while循环不断阻止从RabbitMQ服务器获取套接字上的输入。

是的,但当它阻止等待数据时,它不会使用CPU - 仅当数据可用时才返回该方法。它没有旋转cpu等待数据。