【问题标题】:Spring Cloud Stream Listener not pausing / waiting for the messages in Integration Testing CodeSpring Cloud Stream Listener 没有暂停/等待集成测试代码中的消息
【发布时间】:2019-09-05 22:29:46
【问题描述】:

我有一个通过 Spring Cloud Stream 连接到 RabbitMQ 的应用程序,它运行良好。

对于集成测试用例,我正在尝试使用示例 - https://github.com/piomin/sample-message-driven-microservices/blob/master/account-service/src/test/java/pl/piomin/services/account/OrderReceiverTest.java

但是,在我的情况下,我的应用程序会在某个时间间隔内发回 3 条消息。因此,如果我输入以下行,它会获取消息,但如果获取消息有延迟。

 int i = 1;
    while (i > 0) {
        Message<String> received = (Message<String>) collector.forChannel(channels.statusMessage()).poll();
        if (received != null) {
            LOGGER.info("Order response received: {}", received.getPayload());
        }
    }
  1. 那么,除了我的自定义轮询之外,有什么方法可以让我等待并轮询我的消息,并在收到这些消息时停止?
  2. 我想根据不同通道的响应路由键获取选择消息。可能吗 ? --> 例子:如果routingKey是“InProcess”,应该去Inprocess Method。

【问题讨论】:

    标签: spring-boot integration-testing spring-cloud-stream


    【解决方案1】:

    1)您的问题根本不清楚,请对其进行扩展并准确解释您的意思。

    2) 路由键在 Rabbit 中用于路由到不同的队列,它们在框架中不用于路由到通道或方法。

    但是,您可以在@StreamListener 上使用condition(在headers['amqp_receivedRoutingKey] 上匹配),但最好将消息路由到不同的队列。

    【讨论】:

      猜你喜欢
      • 2020-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-08
      • 2018-11-11
      • 2019-06-21
      相关资源
      最近更新 更多