设置:
我正在使用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。这不是我喜欢的行为。我希望第一条消息在下一条消息启动之前完全完成(非并发)。
如果需要更多信息以获取帮助,请与我们联系。
答案 0 :(得分:0)
如果concurrent-consumers =“1”,则一次只能处理一条消息;确保您没有两次声明入站适配器?这是一个常见的错误 - 尤其是在Web应用程序中。
启用DEBUG日志记录,所有内容都应该清除