Citrus framework 同时发送和接收

Citrus framework 同时发送和接收,citrus-framework,Citrus Framework,我正在尝试向JMS主题发送和接收消息 <testcase name="DeliveryToPT3PLIT"> ... <actions> ... <send endpoint="fromEndpoint"> <message> <resource file="com

我正在尝试向JMS主题发送和接收消息

<testcase name="DeliveryToPT3PLIT">
        ...
        <actions>
            ...              
            <send endpoint="fromEndpoint">
                <message>
                    <resource file="com/roche/icc/citrus/messages/input/PT-3PLWoBatchSplit.xml"/>
                </message>
                <header>
                    ...
                </header>
            </send>

            <receive endpoint="toEndpoint">
                <description>Receive asynchronous message from topic</description>
                <message>
                        <resource file="com/roche/icc/citrus/messages/output/PT-3PLWoBatchSplit.xml"/>
                </message>
                <header>
                    ...
                </header>
            </receive>
        </actions>
    </testcase>

...
...              
...
从主题接收异步消息
...
这些行动似乎一个接一个地进行。问题是我的应用程序运行得非常快,当我向第一个主题发送消息时,它几乎立即出现在“toEndpoint”上。因此,接收操作无法捕获适当的消息,因为它已被处理

有没有办法同时进行这些操作


关于

关于使用JMS主题,有一点需要注意,因为它们是以发布/订阅的方式工作的,所以必须先订阅才能接收消息

这意味着您需要在发布消息之前订阅主题。此外,如果您说您的应用程序速度很快,则在发送消息之前可能需要等待几毫秒。下面是一个JavaDSL示例,我认为它可能适合您。(注意:我已经用JMS主题测试了这个示例)

请注意
parallel()
action容器。它将在一个单独的线程中执行其中的每个操作。每个
sequential()
表示一系列操作,允许您将它们组合在一起。由于两个
sequential()
容器都位于
parallel()
内,因此它们内部的操作将在不同的线程上执行

那么这里发生了什么:您在两个线程上分割您的操作。在第一个线程上,您等待消息。在第二个线程上,首先让它休眠500毫秒,然后发送消息

很抱歉,我没有XML示例,但我希望这对您有所帮助


另外,不要忘记在端点上将
pub sub-domain
属性设置为
true
。请参阅有关JMS主题的Citrus文档:。

关于使用JMS主题,有一点需要注意,因为它们以发布/订阅的方式工作,您必须先订阅才能接收消息

这意味着您需要在发布消息之前订阅主题。此外,如果您说您的应用程序速度很快,则在发送消息之前可能需要等待几毫秒。下面是一个JavaDSL示例,我认为它可能适合您。(注意:我已经用JMS主题测试了这个示例)

请注意
parallel()
action容器。它将在一个单独的线程中执行其中的每个操作。每个
sequential()
表示一系列操作,允许您将它们组合在一起。由于两个
sequential()
容器都位于
parallel()
内,因此它们内部的操作将在不同的线程上执行

那么这里发生了什么:您在两个线程上分割您的操作。在第一个线程上,您等待消息。在第二个线程上,首先让它休眠500毫秒,然后发送消息

很抱歉,我没有XML示例,但我希望这对您有所帮助


另外,不要忘记在端点上将
pub sub-domain
属性设置为
true
。请参阅有关JMS主题的柑橘文档:。

谢谢您的建议!它起作用了!XML将是:……谢谢你的建议!它起作用了!XML将类似于:。。。。。。
parallel().actions(
    sequential().actions( // Thread #1
            ...
            receive(action -> action.endpoint(toEndpoint).payload("message to be received"))),
    sequential().actions( // Thread #2
            sleep(500),
            send(action -> action.endpoint(fromEndpoint).payload("message to be sent"))));