如何测试一个不等待确认消息的垂直市场



我想测试一个通过EventBus接收请求并通过EventBus发送结果的worker vertical。单个请求可能导致0,1,2,。。。回复——在一般情况下,我们不知道会得到多少回复。

业务逻辑是,一旦处理完成,就对请求进行确认,然而响应是以"确认"的形式发送的;火与遗忘;因此,我们只知道回复已经发送,而不一定已经发送。

我正在为这个垂直领域写一个测试。

测试代码计划如下:

1. set up consumer for responses
2. send a request
3. wait until request is acked by the worker verticle
4. wait until consumer finishes validating the responses

这里的问题是第4步——在一般情况下,我们不知道飞行中是否还有一些反应。

暴力解决方案显然是等待一些合理的时间——几毫秒通常就足够了。然而我更喜欢概念性的东西。

我想到的一个解决方案是:

  1. 发送一些我们确信会有单个响应的请求
  2. 等待,直到消费者收到相应的响应。这应该有效,但我不喜欢通过SUT发送两条消息,而不是一条

另一种解决方案是,一旦我们确认请求已被处理,就从测试代码中发送一个额外的响应,但它会被认为是同一个发件人吗?EventBus只保证来自同一个发件人的交货订单,而不是来自不同的发件人。测试不在集群模式下运行,所有操作都在同一台机器上执行,但不一定在同一个线程中执行。

另一个解决方案是以某种方式检查EventBus现在是否为空,但据我所知,这是不可能的。

还有其他(更好的(解决方案吗?

我现在选择的解决方案(在使用vertx/EventBus半年后(是发送两条消息。只有在第一条消息的处理完成后,第二条消息才会得到确认。

只有当您只有一个使用者,所以您的两条消息不能并行处理时,这才会起作用。

相关内容

  • 没有找到相关文章

最新更新