代码之家  ›  专栏  ›  技术社区  ›  heuts

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

  •  0
  • heuts  · 技术社区  · 7 年前

    一切似乎都很顺利,事件的发布速度也很快。

    然而,我不明白为什么消费如此缓慢。添加concurrentConsumers或更改预取计数似乎并没有改变任何事情。

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

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

    1 回复  |  直到 7 年前
        1
  •  1
  •   Artem Bilan    7 年前

    你的问题是:

    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() 这就是诀窍。