我正在尝试构建IntegrationFlowFactory以轻松构建用于在应用程序上下文之间传递事件的集成流程。
一切似乎都有效,事件发布得很快。
然而,我无法弄清楚为什么消费这么慢。添加concurrentConsumers或更改prefetchCount似乎没有任何改变。
其他帖子谈论网络速度很慢,但正如您在RabbitConfig中看到的那样,我使用的是localhost。
我有一个存储库,其中包含我的spring集成示例: https://github.com/teplyuska/spring-integration-example
答案 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}}就可以了。