您好我目前正在使用spring AMQP api連接到RabbitMQ,基本上在我的客戶代碼中,我正在異步讀取消息並在彈性搜索中進行批量插入。當我做ack = AUTO時,我得到400-500 msg/sec的中等速度(從隊列中讀取)。當我確認= NONE時,讀取速度的增加是巨大的,即它達到5000-6000 msg/sec。配置Spring集成QueueChannel for RabbitMQ
硬件配置與用32GB RAM JVM參數如下 Linux機器 -server -Xms1g -Xmx1g -Xss384k PermSize =256米MaxPermSize參數=256米
現在的問題是,當我做ACK =沒有,雖然我獲得了很好的速度,但是JVM在一段時間後才能獲得OutOfMemory,並且我可以看到很多GC正在發生在這種情況下。
我打算使用Spring集成中的QueueChannel,我可以將通道的大小限制爲它可以包含的消息的數量。
誰能告訴我如何與RabbitMQ的實現,這也就是有沒有其他的方式來實現良好的閱讀速度像4000-5000味精/秒,而沒有崩潰的JVM
所有幫助高度讚賞。
感謝 Shantanooķ
我已經有預取計數爲750,但我沒有使用txSize :(會產生什麼效果?我還可以使用Spring與RabbitMQ集成的QueueChannel,因爲它具有大小限制等。 –
'txSize'控制多久我們發送acks,這不是一個好的屬性名稱 - 它與交易無關,從參考手冊:「當與acknowledgeMode AUTO一起使用時,容器將在發送ack之前嘗試處理多達這些消息(等待對於每一個達到接收超時設置),這也是一個事務通道提交時,如果prefetchCount小於txSize,它將增加以匹配txSize。「。使用SI QueueChannel將無助於這種情況 - 內存使用情況在偵聽器容器內。 –