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

Optimise Consuming messages from rabbitmq using Spring Integration

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

似乎一切正常,事件发布速度非常快。

但是我不明白为什么消费这么慢。添加 concurrentConsumers 或更改 prefetchCount 似乎没有任何改变。

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

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

你的问题在这里:

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

同时,您的下游流量是单向并且return没有任何回复:

.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() 就可以了。