0

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

一切似乎都正常,事件发布得非常快。

但是我无法弄清楚为什么消费如此缓慢。添加 concurrentConsumers 或更改 prefetchCount 似乎没有任何改变。

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

我在这里有一个带有我的 spring 集成示例的存储库: https ://github.com/teplyuska/spring-integration-example

4

1 回答 1

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()那里可以解决问题。

于 2017-11-02T14:55:37.917 回答