Apache Camel重新交付策略Junit测试



我已经将apachecamel重新交付策略配置为camel路由之一。我需要编写junit来验证路由是否在成功和失败的情况下都能正常工作。

我能够为失败场景编写junit,并能够通过模拟路由中的服务以返回异常来验证最大重新交付是否按照配置进行。

在积极的场景中,我希望模拟路由中的服务,以便在前3次尝试和最后一次重新交付尝试时返回异常(4(。我希望模拟服务返回预期值,没有任何异常。(3次尝试失败,但第4次尝试成功(

我对此进行了一些研究,但找不到任何解决方案,有没有任何方法可以在测试执行期间获得camel-redelivery实例并在运行时更改mock?

一个简单的解决方案是使用众所周知的ThreadLocal模式,它是一个纯Java解决方案(我的意思是根本不涉及Camel((https://docs.oracle.com/javase/7/docs/api/java/lang/ThreadLocal.html)。

简单解释一下,TheadLocal模式允许您存储只有特定线程才能访问的数据

在您的特定情况下,服务的mock实现可以存储一个(线程绑定的(计数器,该计数器在每个查询中递增。根据当前计数器值,您的服务可能会为值1到3返回异常,为值4返回正常响应。

最新更新