首页 文章

作为JMS使用者的WSO2 ESB 4.8.1的超时

提问于
浏览
0

我有一个描述的代理here

代理的传输是JMS . 代理从jms发出消息,然后通过http向后端发送消息 . 在后端应答之后,代理将回复发送回JMS .

一切顺利 .

有时后端会处理超过30秒的消息 . 在这种情况下,代理无法发回响应 .

wso2carbon.log包含

TID:[0] [ESB] [2015-04-28 09:32:42,250] ERROR - 无法为:org.apache.axis2.transport创建JMSMessageSender .jms.JMSOutTransportInfo @ 3b486731 org.apache.activemq.DestinationDoesNotExistException:目标温度队列:// ID:debcat-ng.hq.cinvest.chel.su-48732 -1429525869210-13397:1:1不存在 . 位于org.apache.activemq.broker的org.apache.activemq.broker.region.RegionBroker.addDestination(RegionBroker.java:277)的arg.apache.activemq.broker.region.AbstractRegion.addDestination(AbstractRegion.java:148) .brokerFilter.addDestination(BrokerFilter.java:145)org.apache.activemq.advisory.AdvisoryBroker.addDestination(AdvisoryBroker.java:174)at org.apache.activemq.broker.BrokerFilter.addDestination(BrokerFilter.java:145)at org.apache.activemq.broker.BrokerFilter.addDestination(BrokerFilter.java:145)位于org.apache.activemq.broker.region.RegionBroker的org.apache.activemq.broker.MutableBrokerFilter.addDestination(MutableBrokerFilter.java:151) . org.apache.activemq.broker.jmx.ManagedRegionBroker.addProducer(ManagedRegionBroker.java:252)中的addProducer(RegionBroker.java:324)位于org.apache.activemq.broker.BrokerFilter.addProducer(BrokerFilter.java:93)的org org.apache.activemq.broker.CompositeDestinationBro上的.apache.activemq.advisory.AdvisoryBroker.addProducer(AdvisoryBroker.java:162)位于org.apache.activemq.broker.BrokerFilter.addProducer(BrokerFilter.java:93)的ker.addProducer(CompositeDestinationBroker.java:56)org.apache.activemq.broker.MutableBrokerFilter.addProducer(MutableBrokerFilter.java:99)at org .apache.activemq.broker.TransportConnection.processAddProducer(TransportConnection.java:566)在org.apache.activemq.command.ProducerInfo.visit(ProducerInfo.java:105)在org.apache.activemq.broker.TransportConnection.service(TransportConnection .java:329)org.apache.activeMq.broker.TransportConnection $ 1.onCommand(TransportConnection.java:184)atg.apache.activemq.transport.MutexTransport.onCommand(MutexTransport.java:50)atg.apache.activemq .transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java:113)org.apache.activemq.transport.AbstractInactivityMonitor.onCommand(AbstractInactivityMonitor.java:288)org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:83) )org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpT) ransport.java:214)atg.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:196)at java.lang.Thread.run(Thread.java:662)TID:[0] [ESB] [2015-04-28 09:32:42,253] ERROR - 发送消息的意外错误 org.apache.axis2 .AxisFault:无法在org.apache.axis上创建一个JMSMessageSender:org.apache.axis2.transport.jms.JMSOutTransportInfo@3b486731 org.apache.axis2.transport.base.AbstractTransportSender.handleException(AbstractTransportSender.java:226) .transport.jms.JMSSender.sendMessage(JMSSender.java:139)在org.apache.axis2.transport.base.AbstractTransportSender.invoke(AbstractTransportSender.java:119)在org.apache.axis2.engine.AxisEngine.send(AxisEngine .java:442)org.apache.synapse.core.axis2.Axis2Sender.sendBack(Axis2Sender.java:163)org.apache.synapse.core.axis2.Axis2SynapseEnvironment.send(Axis2SynapseEnvironment.java:321)at org . apache.synapse.mediators.built in.SendMediator.mediate(SendMediator.java:94)在org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:77)在org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:47)在org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:131)在org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis2SynapseEnvironment.java:268)在org.apache.synapse.core .axis2.SynapseCallbackReceiver.handleMessage(SynapseCallbackReceiver.java:488)位于org.apache.synapse.core.axis2.SynapseCallbackReceiver.receive(SynapseCallbackReceiver.java:170)at atorg.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180)位于ru.chelinvest.wso2esb.transport.XGateSender的org.apache.axis2.transport.base.AbstractTransportSender.handleIncomingMessage(AbstractTransportSender.java:148) . sendMessage(XGateSender.java:205)位于org.apache.axis2.transport.base.AbstractTransportSender.invoke(AbstractTransportSender.java:112)org.apache.axis2.engine.AxisEngine $ TransportNonBlockingInvocationWorker.run(AxisEngine.java:626) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:615)at java.lang.Thread.run(Thread.java:724) )

关键线是:

org.apache.activemq.DestinationDoesNotExistException: The destination temp-queue://ID:debcat-ng.hq.cinvest.chel.su-48732-1429525869210-13397:1:1 does not exist.

Unexpected error sending message back

Unable to create a JMSMessageSender for : org.apache.axis2.transport.jms.JMSOutTransportInfo@3b486731

为什么在处理邮件的时间超过30秒时会发生这种情况?如何扩展超时?

2 回答

  • 0

    检查一下:

    http://stackoverflow.com/questions/29383755/connection-timeout-after-request-is-read-in-wso2-esb
    http://stackoverflow.com/questions/22694671/wso2-esb-connection-timeout-tuning
    http://stackoverflow.com/questions/21234087/wso2-esb-how-to-increase-endpoint-timeout
    

    你在Windows或Linux上运行这个ESB了吗?如果Windows是什么样的?

  • 0

    我找到了class JMSSender at github . 显然,我应该定义一个属性JMS_WAIT_REPLY . 我已经在发送端的 endpoints 中定义了它 . 临时队列的响应超时已扩展 . 这是我的发送 endpoints :

    <endpoint xmlns="http://ws.apache.org/ns/synapse" name="xgate">
       <address uri="jms:/....">
          <suspendOnFailure>
             <progressionFactor>1.0</progressionFactor>
          </suspendOnFailure>
          <markForSuspension>
             <retriesBeforeSuspension>0</retriesBeforeSuspension>
             <retryDelay>0</retryDelay>
          </markForSuspension>
          <timeout>
             <duration>60000</duration>
             <responseAction>fault</responseAction>
          </timeout>
       </address>
       <property name="CHARACTER_SET_ENCODING" value="Windows-1251" scope="axis2"/>
       <property name="CONNECTION_TIMEOUT" value="120000" scope="default"/>
       <property name="messageType" value="application/xml" scope="axis2"/>
       <property name="JMS_WAIT_REPLY" value="60000" scope="axis2"/>
       <property name="SO_TIMEOUT" value="120000" scope="default"/>
    </endpoint>
    

相关问题