使用Spring Integration优化来自rabbitmq的消费消息

时间:2017-11-02 13:15:34

标签: spring-boot rabbitmq spring-integration spring-integration-dsl

我正在尝试构建IntegrationFlowFactory以轻松构建用于在应用程序上下文之间传递事件的集成流程。

一切似乎都有效,事件发布得很快。

然而,我无法弄清楚为什么消费这么慢。添加concurrentConsumers或更改prefetchCount似乎没有任何改变。

其他帖子谈论网络速度很慢,但正如您在RabbitConfig中看到的那样,我使用的是localhost。

我有一个存储库,其中包含我的spring集成示例: https://github.com/teplyuska/spring-integration-example

1 个答案:

答案 0 :(得分:1)

你的问题在这里:

Amqp.inboundGateway(getListenerContainer(queue, concurrentConsumers, prefetchCount)

同时您的下游流程单向并且不会返回任何回复:

.handle(p -> {
                UpdateSecretEvent payload = (UpdateSecretEvent) p.getPayload();
                System.out.println("Account: " + payload.getAccountId() + " has secret: " + payload.getNewSecret());
 })
.get();

.handle(p -> {
                UpdateEmailEvent payload = (UpdateEmailEvent) p.getPayload();
                System.out.println("Account: " + payload.getAccountId() + " has email: " + payload.getEmail());
})
.get();

因此,AmqpInboundGateway等待MessagingTemplate.sendAndReceive() private static final long DEFAULT_TIMEOUT = 1000L;的回复Amqp.inboundAdapter()

切换到{{1}}就可以了。