当前位置: 首页 > 知识库问答 >
问题:

WSO2中的JMS使用者事务

章景同
2023-03-14

我试图将WSO2配置为使用来自ActiveMQ的消息,并在处理过程中引发错误时requeue(通常是当对远程web服务的调用失败时)。

<proxy name="SimpleStockQuoteService" transports="jms" startOnLoad="true">
  <target>
     <inSequence onError="JSMErrorHandling">
        <log level="full"/>
        <send>
           <endpoint>
              <address uri="http://localhost/testapp"/>
           </endpoint>
        </send>
        <log level="full"/>
        <log level="custom">
           <property name="Custom log" value="End In Sequence"/>
        </log>
     </inSequence>
     <outSequence>
        ...
     </outSequence>
  </target>
</proxy>
<sequence name="JSMErrorHandling">
  <log level="custom">
     <property name="Error" value="Error executing sequence"/>
  </log>
  <property name="SET_ROLLBACK_ONLY" value="true" scope="axis2"/>
  <drop/>
</sequence>

Activemq在Axis2.xml中配置,属性transport.jms.SessionTransact设置为true。

当远程URL的格式无效(例如使用错误的协议)时,JMS回滚/重新传递/[重定向到死信]特性可以正常工作。但是,如果我停止远程web服务器,或者使用invlaed服务器名称,则不会请求消息,尽管错误由JMSErrorHandling序列处理。

[2013-06-04 12:17:47,810]  INFO - LogMediator To: , WSAction: urn:mediate, SOAPAction: urn:mediate, MessageID: ID:GCHESNEL764-57101-1370344525419-9:1:1:1:1, Direction: request, Envelope: <?xml ver
[2013-06-04 12:17:47,813]  INFO - LogMediator To: , WSAction: urn:mediate, SOAPAction: urn:mediate, MessageID: ID:GCHESNEL764-57101-1370344525419-9:1:1:1:1, Direction: request, Envelope: <?xml ver
[2013-06-04 12:17:47,814]  INFO - LogMediator Custom log = End In Sequence
[2013-06-04 12:17:48,818]  WARN - ConnectCallback Connection refused or failed for : localhost/127.0.0.1:80
[2013-06-04 12:17:48,821]  WARN - EndpointContext Endpoint : endpoint_413907dd1d4e2370ea0ae277fbfebcaf6504f196a11459bb will be marked SUSPENDED as it failed
[2013-06-04 12:17:48,823]  WARN - EndpointContext Suspending endpoint : endpoint_413907dd1d4e2370ea0ae277fbfebcaf6504f196a11459bb - current suspend duration is : 30000ms - Next retry after : Tue J
[2013-06-04 12:17:48,824]  INFO - LogMediator Error = Error executing sequence

最后,如果WSO2服务在处理期间关闭,则不会请求该消息。是否有其他配置可以替代这里提出的配置:http://docs.wso2.org/wiki/display/esb460/jms+faq#jmsfaq-howtopreventmessageLossduetounavailabilityofadataSource

纪尧姆

共有1个答案

宰父正真
2023-03-14

使用已经在wso2 ESB中实现的Messagestore和MessageProcessor,您可以使用存储和处理技术实现给定的场景!更多的信息可以在保证传递文章[1]、用于DCL的EIP文章[2]、消息转发procssor[3]中找到

[1]http://wso2.com/library/articles/2014/01/probured-delivery-with-message-store-message-processor%20/

[2]http://docs.wso2.org/display/integrationpatterns/dead+letter+channel

 类似资料:
  • 我有一个在这里描述的代理 代理的传输是JMS。代理从jms提供消息,然后通过HTTP将消息发送到后端。在后端应答之后,代理将一个应答发送回JMS。 一切正常。 有时后端处理一条消息的时间超过30秒。在这种情况下,代理无法发回响应。 WSO2Carbon.log包含 当处理一条消息的时间超过30秒时,为什么会发生这种情况?如何扩大超时时间?

  • 所以我的问题是:

  • 在WSO2ESB-5.0.0中使用代理服务侦听jms队列,如何使用activemq consumer.exclusive=true属性?我在Axis2.xml中有以下配置: 我在jms队列上监听的所有代理服务都使用此配置。esb不使用任何消息。当我删除“&nested.consumer.exclusive=true”时,它将正确地使用消息。如果我查看activemq控制台,我会在队列上看到0个消费

  • 当我启动ESB服务器时,我得到以下错误:无法获取JNDI上下文、JMS连接工厂:TopicConnectionFactory或默认目的地:null for JMS CF 任何帮助都将不胜感激。谢了!

  • 1天前 嗨,当试图根据http://wso2.org/project/esb/java/4.0.3/docs/samples/transport_samples.html/sample250使用wso2 esb侦听来自JMS队列的消息时,我遇到了一个异常,如下所示 XML解析错误:格式不正确的位置: org.apache.axis2.axisfault:系统无法从jms://jmslistener

  • 它们是我可以在sprint-boot应用程序上动态地向上和向下缩放消费者的一种方式吗?