apache-camelcitrus-framework

How to read acknowledgement after send action in Citrus with Camel MLLP Component


I have an application that receives a HL7 message and sends back an acknowledgement response. I'm using Citrus with the Camel MLLP component to send this HL7 message. What I'm trying to achieve is to be able to read the acknowledgement to compare it.

I currently have a test with hl7Payload, a String variable with HL7 content. In my Citrus context I have:

<citrus-camel:sync-endpoint id="mllpOutEndpoint"
                            camel-context="mllpContext"
                            endpoint-uri="mllp:localhost:6662"/>

I tried extracting the header I found on the Camel documentation:

send("mllpOutEndpoint")
    .fork(true)
    .messageType(MessageType.PLAINTEXT)
    .payload(hl7Payload)
    .extractFromHeader("CamelMllpAcknowledgementString", "receivedAck");

echo("${receivedAck}");

But I get this error:

com.consol.citrus.exceptions.UnknownElementException: Could not find header element CamelMllpAcknowledgementString in received header

Everything works fine without extractFromHeader(). The application receives my HL7 message, sends back an ACK and the test passes, but I'm struggling to get this ACK content back to make further tests. What am I missing here?


Solution

  • I got it:

    async().actions(
        send("mllpOutEndpoint")
                .messageType(MessageType.PLAINTEXT)
                .payload(hl7Payload),
    
        receive("mllpOutEndpoint")
                .header("CamelMllpAcknowledgementType", "AA")
    );