当前位置: 首页 > 知识库问答 >
问题:

为什么我的Spring-Cloud-Stream测试配置也在另一个类中启动rabbitMQ侦听器?

楚浩然
2023-03-14

我正在尝试做一个简单的Spring-Cloud-Stream单元测试,以验证流之间的连接;基本上,处理程序可以从一个流读取数据,然后写入另一个流。这部分工作正常。问题是,应用程序的其他部分也正在启动;即rabbitMQ侦听器。在另一个类中(除了我正在测试的类之外)有一个方法,它有@RabbitListener。这是正在调用的方法。我的机器上确实有rabbit在本地运行,用于本地开发测试。但我不希望在测试范围内调用它。

这里的spring cloud stream测试文档示例

@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment= SpringBootTest.WebEnvironment.RANDOM_PORT)

我认为是@SpringBootTest启动了整个配置,包括RabbitMQ监听器。我已经删除了webEnvironment参数,但这并没有什么不同。

目前,解决方法是放置Spring。rabbitmq。侦听器。易于理解的自动启动:应用程序中为false。yml,但出于各种原因,我不想继续这样做,其中一个原因是我可能想在某个时候对rabbitlistener进行单元测试,尽管是在一个适当有限的测试上下文中。

我们正在使用2.0.1版的spring cloud stream和spring cloud stream测试支持,尽管这似乎是一个更基本的spring配置问题,我不知道如何限制上下文。

共有1个答案

子车俊哲
2023-03-14

可以在AutoStart属性中使用属性占位符

spring.rabbitmq.listener.simple.auto-startup: ${auto.start:true}

然后在测试用例中使用@TestProperty tySource将其设置为false。

 类似资料:
  • 我已经用Rabbitmq绑定器设置了一个Spring Cloud stream。我想用Spring Cloud stream做性能测试。有什么方法可以用它做性能测试吗?

  • 问题内容: 可能有两堂课,而在一堂课中 在另一个 //更多原因是因为我需要将按钮(摆动)分离到动作监听器 我该怎么办? 谢谢 问题答案: 不仅可以将这两个部分分开,而且还建议这样做(请参阅MVC模式-非常有关分离屏幕控件(如按钮)和程序逻辑) 我想到的最简单的方法是编写一个实现接口的命名类,如下所示: 然后将其添加到您的按钮:

  • 这不是一个大问题,但我很好奇一些额外的流消费者来自哪里,如果这是一个设置,我可以改变。 我有一个针对本地Kafka经纪人的非常简单的spring cloud stream消费者设置。这是spring配置 以及消费者阶层本身: 但当我运行应用程序时,我可以看到输出中创建了3个消费者。但是,当我在我的本地代理中检查消费者组成员时,它总是只有一个消费者,并且总是创建的第二个消费者(即使用客户id测试组2

  • 我有两个非常简单的spring-cloud-stream应用程序。消息生产者Service3通过Binder-Kafka向消费者Service4发送消息。 我用春云侦探来追踪它们之间的跨度。但是只有Service3中的跨在zipkin服务器中可用。Service4没有显示span。

  • 我正在尝试使用spring cloud stream供应商和消费者实现上述场景。 此应用程序是一个包含生产者和消费者的单一spring boot应用程序 下面是java类 我正在尝试使用消费者群体功能来实现这一点,如下所示。 当我启动应用程序时,我得到以下错误。 从日志中可以清楚地看出,它正试图再次创建rss-exchange.requester.errors.recoverer。在这种情况下,只

  • 我刚刚开始玩弄《Spring-Cloud-Stream》中的Kafka活页夹。 我配置了一个简单的消费者: 但当我启动应用程序时,我看到在启动日志中创建了三个独立的消费者配置: 我发现这些配置之间唯一不同的是客户机。id。 除此之外,我不知道为什么只有一个消费者有三种配置。 是因为我也在运行吗? 这是我的: