使用Spring RabbitMQ的性能很慢
我试图在30秒内通过13个线程向另一台机器发送51MB的数据。这意味着,每30秒,51*13=663Mb的数据以突发方式发送到目标机器 接下来的步骤:使用Spring RabbitMQ的性能很慢,rabbitmq,spring-amqp,Rabbitmq,Spring Amqp,我试图在30秒内通过13个线程向另一台机器发送51MB的数据。这意味着,每30秒,51*13=663Mb的数据以突发方式发送到目标机器 接下来的步骤: 我在发送方和接收方rabbitmq服务器之间使用了铲子来传输消息 发送方和接收方都有自己的rabbitMq服务器在运行 我正在使用rabbitmplate.send(routingKey,51mbMessage)发送消息 我正在目标机器上使用OnMessageListener来接收消息 on接收方的消息侦听器: 接收器端的连接工厂: clas
接收器端的连接工厂:
class=“org.springframework.amqp.rabbit.connection.CachingConnectionFactory”>
观察结果:
你能帮我克服这次耽搁吗。我真的很感激这里提供的任何帮助。提前感谢。您需要隔离问题-例如,您是否只在Spring AMQP中看到这一点?如果直接使用Java客户机生成类似的负载,会发生什么?只有这样,你才能把手指指向弹簧。也许您的网络无法处理负载。您的网络设置是什么?例如,托管在单个AWS区域,远程在CloudAMQP上,等等。?这通常是最大的瓶颈。编写一个非常简单的脚本(无框架),将大型数据集推送到Rabbit,看看它是否能够足够快地加载。嗨,我理解这个问题。。不知不觉地,我把同样的信息作为确认发送了回来。这意味着发送了51Mb消息,并且在Acknowledgement消息中返回了相同的51Mb消息。这导致带宽阻塞,进而导致吞吐量降低。感谢Gary和Matt的时间。您需要隔离问题-例如,您是否只在Spring AMQP中看到这一点?如果直接使用Java客户机生成类似的负载,会发生什么?只有这样,你才能把手指指向弹簧。也许您的网络无法处理负载。您的网络设置是什么?例如,托管在单个AWS区域,远程在CloudAMQP上,等等。?这通常是最大的瓶颈。编写一个非常简单的脚本(无框架),将大型数据集推送到Rabbit,看看它是否能够足够快地加载。嗨,我理解这个问题。。不知不觉地,我把同样的信息作为确认发送了回来。这意味着发送了51Mb消息,并且在Acknowledgement消息中返回了相同的51Mb消息。这导致带宽阻塞,进而导致吞吐量降低。谢谢加里和马特抽出时间。
<rabbit:listener-container connection-factory="connectionFactory" prefetch="10" >
<rabbit:listener ref="onMessageReceiverforMyTestQueue" queue- names="MyTestQueue" />
</rabbit:listener-container>
<bean id = "onMessageReceiverforLoadTestQueue" class="MyPackage.MyMessageListener">
</bean>
class="org.springframework.amqp.rabbit.connection.CachingConnectionFactory">
<constructor-arg value="***.**.**.**"/>
<property name="username" value="abcd"/>
<property name="password" value="abcd"/>
<property name="channelCacheSize" value="50"/>