0

目前我正在使用 apache camel。在我的应用程序中,我有 2 条路线。

第一个路由包含 HTTP 作为输入、一些进程和 WMQ(此 WMQ 仅用于写入)

在第二条路线上,我有用于 from 标记和一些映射过程的 WMQ(用于只读)。

我想要做的是将第二条路由上的 WMQ 的响应发送到我的第一条路由上的 HTTP。

怎么做?

这是我到目前为止的配置。

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:jdbc="http://www.springframework.org/schema/jdbc" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:p="http://www.springframework.org/schema/p" default-init-method="init" xmlns:util="http://www.springframework.org/schema/util" xmlns:osgi="http://www.springframework.org/schema/osgi" xsi:schemaLocation="http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xs http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd http://www.springframework.org/schema/osgi  http://www.springframework.org/schema/osgi/spring-osgi.xsd">

    <import resource="classpath:/META-INF/spring/components.xml"/>

    <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">

        <dataFormats>
            <xmljson id="xmljson" forceTopLevelObject="true" skipNamespaces="true" removeNamespacePrefixes="true"/>
        </dataFormats>

        <route>
            <from uri="jetty:http://localhost:8888/uebermittleAusweisdaten"/>
            <process ref="TransformToXML"/>
            <to uri ="xslt:soap-template.xsl"/>
            <setHeader headerName="CamelJmsDestinationName">
                <constant>queue:///Queue.w?targetClient=1</constant>    
            </setHeader>
            <setHeader headerName="JMS_IBM_Character_Set">
                <constant>ISO8859_1</constant>    
            </setHeader>
            <to uri="jms:queue:Queue.w"/>
            <inOut uri="mock:result"/>
        </route>
        <route>
            <from uri="jms:queue:queue.r"/>
            <marshal ref="xmljson"/>
            <setHeader headerName="CamelJmsDestinationName">
                <constant>mock:result</constant>    
            </setHeader>
            <to uri="stream:out"/>
        </route>

    </camelContext>

</beans>

提前致谢。

4

1 回答 1

0

使用InOut模式:

<to uri="jms:queue:LSMH.ZKSEAP.SERVICEBUS" pattern="InOut" />

使用InOut,Camel 会将回复发送回JMSReplyTo队列,有关更多信息,请参阅Camel 文档

一个简单的设置如下所示:

<route>
    <from uri="direct:start" />
    <to uri="jms:myQueue" pattern="InOut" />
    <log message="Received body in sending route: ${body}" />
</route>
<route>
    <from uri="jms:myQueue" />
    <setBody><simple>${body}, World!</simple></setBody>
</route>

发送Hellodirect:start将导致以下日志消息:

Received body in sending route: Hello, World!
于 2014-06-11T18:06:47.067 回答