Jboss 将消息从一个jms队列路由到另一个jms队列时的事务提交延迟

Jboss 将消息从一个jms队列路由到另一个jms队列时的事务提交延迟,jboss,jms,jboss5.x,mule,Jboss,Jms,Jboss5.x,Mule,我们正在尝试使用Mule ESB和JBoss消息传递构建简单的事务化jms-to-jms路由器。当我们在应用程序配置如下的情况下运行Mule ESB时,我们观察到奇怪的行为 大约有10条消息从队列test1路由到test2 大约40秒内什么也没发生 转到1 当我们开始测试时,队列test1中充满了大约500条消息。我们使用Mule 3.2和JBoss 5.1 如果我从下面的代码中删除事务,一切正常,所有消息都会立即发送到队列test2。此外,如果我将事务从xa更改为jms,那么一切都很好——用j

我们正在尝试使用Mule ESB和JBoss消息传递构建简单的事务化jms-to-jms路由器。当我们在应用程序配置如下的情况下运行Mule ESB时,我们观察到奇怪的行为

  • 大约有10条消息从队列test1路由到test2
  • 大约40秒内什么也没发生
  • 转到1
  • 当我们开始测试时,队列test1中充满了大约500条消息。我们使用Mule 3.2和JBoss 5.1

    如果我从下面的代码中删除事务,一切正常,所有消息都会立即发送到队列test2。此外,如果我将事务从xa更改为jms,那么一切都很好——用jms:transaction替换xa事务标记

    我不知道ESB上消息处理暂停的原因,可能是事务提交延迟了

    我的问题是:我应该怎么做才能让xa事务正常工作

    如果需要,我会提供更多细节。我以前在Mule ESB论坛上问过这个问题,但没有回答

    
    org.jboss.naming:org.jnp.interfaces
    真的
    org.jnp.interfaces.NamingContextFactory
    本地主机:1099
    X连接工厂
    
    您可以找到1条消息交互的日志片段。请注意,在这种情况下没有延误。
    是11条消息的日志片段。应用程序启动时,所有这些消息都在队列test1中,因为您可以看到10条消息被立即路由,一条消息被延迟1分钟。

    我找到了问题的根源:我的队列使用以下属性定义:

       <attribute name="RedeliveryDelay">60000</attribute>
    
    60000
    
    删除它或设置较低的值可以解决我的延迟问题。问题是,我不知道为什么:)


    我一直认为在交付失败时会使用重新交付延迟,但在我的应用程序中并非如此

    事务在此延迟后是否正确提交或回滚?您是否可以将Mule日志级别设置为调试和共享1消息交互的日志条目(即在“test1”队列中删除一条消息)?延迟事务已正确提交,消息显示在队列test2中。我在问题中添加了日志,显示了1条和11条消息的交互。你们知道为什么会发生这种情况吗?