SpringCloudStream - RabbitMQ binder的慢消费者

时间:2016-10-26 14:40:42

标签: spring-cloud spring-cloud-stream

我有一个用例将http POST发送到创建为Spring Boot APP的HTTP Source,其中包含Spring Cloud Stream App Starter的http源代码。这个过程发布5k记录/秒。我有一个Sink应用程序来将数据保存到Mongo DB。在应用程序中读取速度非常慢,为20 msgs / sec。我使用以下属性,看到没有区别。我使用相同的前缀来加载属性 - spring.cloud.stream.rabbit.binder。你能告诉我如何在从RabbitMQ binder中读取数据时实现并发吗?

application.properties

spring.cloud.stream.binder.rabbit.default.prefix=z.
spring.cloud.stream.bindings.input.destination=http-source
spring.cloud.stream.bindings.input.durableSubscription=true
spring.cloud.stream.bindings.input.group=default
spring.cloud.stream.rabbit.binder.addresses=localhost:5672
spring.cloud.stream.rabbit.binder.username=guest
spring.cloud.stream.rabbit.binder.password=guest
spring.cloud.stream.rabbit.binder.listener.concurrency=100
spring.cloud.stream.rabbit.binder.listener.max-concurrency=500
spring.cloud.stream.rabbit.binder.listener.prefetch=1000
spring.cloud.stream.rabbit.binder.listener.acknowledge-mode=NONE

server.port=${listen.port}

####################################################
# Mongo
#      Configuration - DEV
####################################################
mongodbDatabasename=*****
mongodbPassword=*****
mongodbUsername=*****
mongodbReplicaName=
mongodbAddresses=localhost:27017
mongodbAuthenticationDatabase=users
mongodbAuthMechanism=SCRAM-SHA-1
region=DEV
collectionName=*****
mongodbSocketTimeout=25000
mongodbConnectionTimeout=5000
maxConnectionForHost=5
minConnectionForHost=100

谢谢并感谢您的帮助 KARTHIK

1 个答案:

答案 0 :(得分:1)

我认为您需要将并发和其他与消费者相关的属性设置为每个绑定消费者属性(前缀为spring.cloud.stream.rabbit.bindings.<channelName>.consumer.。您可以参考更多详细信息scikit-multilearn

不确定您是如何提出前缀为spring.cloud.stream.rabbit.binder.listener.concurrency的属性的。你在文档中的任何地方都看到了吗?