Citrus 并行收发消息找不到回复通道

Citrus fails to find reply channel when receiving & sending messages in parallel

我正在使用 Citrus 框架来测试 Camel 路由。我正在向基于 Camel 的应用程序发送请求,该应用程序又将多个请求并行发送到 SOAP 服务器。 我正在尝试使用并行容器模拟带有 Citrus 的 SOAP 服务器。我使用选择器来触发正确的接收和发送动作,类似于下面的例子(实际代码有点复杂):

parallel().actions(
    sequential().actions(
        soap().server("soapService")
            .receive()
            .selector("xpath:local-name(/*)='exampleRequest1' AND xpath://ns1:id/text()='123'")
            .payload(new ClassPathResource("data/123/exampleRequest1.xml")),
        echo("Received exampleRequest1"),
        soap().server("soapService")
            .send()
            .payload(new ClassPathResource("data/123/exampleResponse1.xml")),
        echo("Sent exampleResponse1"),
    ),
    sequential().actions(
        soap().server("soapService")
            .receive()
            .selector("xpath:local-name(/*)='exampleRequest2' AND xpath://ns1:id/text()='456'")
            .payload(new ClassPathResource("data/456/exampleRequest2.xml")),
        echo("Received exampleRequest2"),
        soap().server("soapService")
            .send()
            .payload(new ClassPathResource("data/456/exampleResponse2.xml")),
        echo("Sent exampleResponse2"),
    ),
    ...
)

Citrus 确实收到了消息,但无法回复。每个并行线程的错误信息是:

13:35:36.121 [Thread-22] ERROR com.consol.citrus.container.Parallel - Parallel test action raised error
java.lang.IllegalArgumentException: Failed to find reply channel for message correlation key: citrus_message_id = 'c37eb703-4fb3-4c34-98f8-9cf8ee0414a1'
    at org.springframework.util.Assert.notNull(Assert.java:198)
    at com.consol.citrus.channel.ChannelSyncConsumer.send(ChannelSyncConsumer.java:73)
    at com.consol.citrus.actions.SendMessageAction.doExecute(SendMessageAction.java:125)
    …

重要提示:每个线程正在寻找的citrus_message_id始终相同但应该不同。因此,如果其中一个发送操作确实成功,则通常是使用错误的回复渠道发送。

这可能是什么问题?这是一个错误还是我遗漏了什么? 非常感谢!

并行容器导致这里出现问题。但是在接收操作中使用选择器时,您可以安全地删除并行容器。一旦你删除了平行线

,它应该可以正常工作