目前我正在使用 apache camel 来编写和读取 Websphere MQ。
在我的项目中,我有 2 个 WMQ:1 个用于写入(Queue.W),1 个用于读取(Queue.R)。以下是我配置我的应用程序的方式:
<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:mobako.sender.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" pattern="InOnly"/>
<to uri="direct:result" pattern="InOut"/>
</route>
<route>
<from uri="jms:queue:Queue.R"/>
<marshal ref="xmljson"/>
<to uri="direct:result"/>
</route>
</camelContext>
</beans>
我想要做的是:在我的第一个流程中将来自读取队列(Queue.R)的响应发送回 http 端点。
为此,我尝试使用 InOut 模式。但是,似乎 InOut 模式仅在我具有相同端点时才有效(例如,如果我的第一个流的出站是 Queue.W,那么我的第二个流的入站也应该是 Queue.W)。但是,由于我使用不同的 WMQ 进行写入和读取,我无法使其工作。
从我的配置中可以看出,我尝试通过将 inOnly 模式添加到我的 Queue.W 然后添加来解决它
<to uri="direct:result" pattern="InOut"/>
在我的第二个流程之后,我尝试通过添加从 Queue.R 发回响应
<to uri="direct:result"/>
但它也没有工作!此外,在我这样做之后,我得到了以下错误:
org.apache.camel.component.direct.DirectConsumerNotAvailableException:端点上没有可用的消费者:端点 [direct://result]。交流[消息:http ://security.fraport.de/zks-eap/uebermittleAusweisdatenurn:uuid:ID-FRA000000085404-64407-1402571267690-0-2esbp://services.fraport.de/lsmh/mobakoesbp://services.fraport.de/lsmh/zks-eapesbp://services.fraport.de/ lsmh/mobako12.1] 在 org.apache.camel.component.direct.DirectProducer.process(DirectProducer.java:47) 在 org.apache.camel.processor.SendProcessor.process(SendProcessor.java:113) 在 org.apache .camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:72) 在 org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:398) 在 org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java :191)在 org.apache.camel.processor.Pipeline.process(Pipeline.java:118) 在 org.apache.camel.processor.Pipeline.process(Pipeline.java:80) 在 org.apache.camel.processor。骆驼内部处理器。org.apache.camel.component.jetty.CamelContinuationServlet.service(CamelContinuationServlet.java:149) 在 org.eclipse 的 javax.servlet.http.HttpServlet.service(HttpServlet.java:668) 的进程(CamelInternalProcessor.java:191) .jetty.servlet.ServletHolder.handle(ServletHolder.java:684) 在 org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1496) 在 org.eclipse.jetty.servlets.MultiPartFilter.doFilter(MultiPartFilter .java:136) 在 org.apache.camel.component.jetty.CamelFilterWrapper.doFilter(CamelFilterWrapper.java:44) 在 org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1467) 在 org. eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:499) 在 org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086) 在 org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:428) 在 org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020) 在 org.eclipse.jetty.server .handler.ScopedHandler.handle(ScopedHandler.java:135) 在 org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116) 在 org.eclipse.jetty.server.Server.handle(Server.java :370) 在 org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:971) 在 org.eclipse.jetty.server 的 org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:494)。 AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:1033) 在 org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:644) 在 org.eclipse.jetty.http。org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82) 上的 HttpParser.parseAvailable(HttpParser.java:235) org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:667)在 org.eclipse.jetty.io.nio.SelectChannelEndPoint $1.run(SelectChannelEndPoint.java:52) 在 org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608) 在 org.eclipse.jetty。 util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543) at java.lang.Thread.run(Unknown Source)52) 在 org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543) 在 java.lang 的 org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)。 Thread.run(未知来源)52) 在 org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543) 在 java.lang 的 org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)。 Thread.run(未知来源)
关于如何解决我的问题的任何建议?非常感谢。非常感谢您的帮助!