在处理来自JMS的下一条消息之前,Service Activator未完成

时间:2015-06-04 13:44:45

标签: java spring jms spring-integration spring-jms

设置:
我正在使用Spring Integration从消息队列中获取消息。消息以XML格式提供,名为parseCustPaymentXML的方法由我的服务激活器调用,处理XML消息,并将其存储在Java对象中。然后,从parseCustPaymentXML调用另一个名为processCustPayment的方法,该方法接受Java对象并将它们插入到数据库中。下面是我如何设置入站JMS和服务激活器...

for (var i = 8078; i < 8085; i++) {
    jQuery.ajax({
           'url': 'http://localhost:' + i + '/test/',
            dataType : 'jsonp',
            crossDomain:true,
            async:false,
    })
    .done( function( data ) {
           // Handles successful responses only
    })
    .fail( function( reason ) {
           // Handles errors only
           console.debug( reason );
    })
    .always( function( data, textStatus, response ) {
           // If you want to manually separate stuff
           // response becomes errorThrown/reason OR jqXHR in case of success
    })
    .then( function( data, textStatus, response ) {
           // In case your working with a deferred.promise, use this method
           // Again, you'll have to manually separates success/error
    });
}

问题:
该过程不需要很长时间才能运行,但是如果在parseCustPaymentXML或processCustPayment仍在运行时收到消息,则会提取消息并在第一个消息进程的同时启动parseCustPaymentXML。这不是我喜欢的行为。我希望第一条消息在下一条消息启动之前完全完成(非并发)。

如果需要更多信息以获取帮助,请与我们联系。

1 个答案:

答案 0 :(得分:0)

如果concurrent-consumers =“1”,则一次只能处理一条消息;确保您没有两次声明入站适配器?这是一个常见的错误 - 尤其是在Web应用程序中。

启用DEBUG日志记录,所有内容都应该清除