spring 集成迁移 3 到 4(JMS header 问题)
spring integration migration 3 to 4 (JMS header issues)
我正在将 Web 应用程序从 spring 3.1 迁移到 4.1。我们使用:
框架,
一体化,
批,
安全,
和网络服务,
在大多数情况下,这是一个相对轻松的过程;但是,我在集成方面遇到了一个问题。此 JMS 消息:
GenericMessage [payload=com.etp.bpm.services.jaxwsbindings.data.ProcessActionInstance@50be7b46, headers={errorChannel=org.springframework.messaging.core.GenericMessagingTemplate$TemporaryReplyChannel@98f5a14, jms_timestamp=1447280384929, determinantName=SeasonPeriod, replyChannel=org.springframework.messaging.core.GenericMessagingTemplate$TemporaryReplyChannel@98f5a14, processActionName=DerivationExecutionAction, jms_replyTo=HornetQQueue[asyncActionReplyQueue], jms_messageId=ID:4fd881ab-88c2-11e5-a7c1-a7dd640b56cc, timestamp=1447280384934, id=505ca511-88d0-e892-acdf-9bdc4330e68f, JMSXDeliveryCount=1, jms_redelivered=false, priority=4, determinantTypes=[Raw], jms_correlationId=e82424fd-3dab-4ef1-bad2-9a6ec7356a11_1, groups=[PrimaryDeterminantsGroup, 10 minutes, Weekly Prep Initial Settings]}]
导致此错误:
java.lang.Exception: The 'priority' header value must be an Integer.
当 spring 尝试验证 org.springframework.integration.IntegrationMessageHeaderAccessor 中的 header 值时,会抛出错误,随后进程失败:
else if (IntegrationMessageHeaderAccessor.SEQUENCE_NUMBER.equals(headerName)
|| IntegrationMessageHeaderAccessor.SEQUENCE_SIZE.equals(headerName)
|| IntegrationMessageHeaderAccessor.PRIORITY.equals(headerName)) {
Assert.isTrue(Integer.class.isAssignableFrom(headerValue.getClass()), "The '" + headerName
+ "' header value must be an Integer.");
}
我们的应用程序中没有任何 JMS 代码。 Spring 创建并处理所有消息,那么它如何创建一个它无法处理的 header?
我认为这可能是集成、integration-jms 和 jms-api 之间的版本不匹配问题,但我已经准备好了所有正确的 jar。任何建议将不胜感激。谢谢。 (请参阅下面的堆栈跟踪)
14:38:05,376 INFO [stdout] (Deferred Command #8) java.lang.Exception: The 'priority' header value must be an Integer.
14:38:05,376 INFO [stdout] (Deferred Command #8) at org.springframework.util.Assert.isTrue(Assert.java:65)
14:38:05,377 INFO [stdout] (Deferred Command #8) at org.springframework.integration.IntegrationMessageHeaderAccessor.verifyType(IntegrationMessageHeaderAccessor.java:109)
14:38:05,377 INFO [stdout] (Deferred Command #8) at org.springframework.messaging.support.MessageHeaderAccessor.setHeader(MessageHeaderAccessor.java:308)
14:38:05,377 INFO [stdout] (Deferred Command #8) at org.springframework.messaging.support.MessageHeaderAccessor.copyHeaders(MessageHeaderAccessor.java:393)
14:38:05,377 INFO [stdout] (Deferred Command #8) at org.springframework.integration.support.MessageBuilder.copyHeaders(MessageBuilder.java:154)
14:38:05,377 INFO [stdout] (Deferred Command #8) at org.springframework.integration.support.MessageBuilder.copyHeaders(MessageBuilder.java:42)
14:38:05,377 INFO [stdout] (Deferred Command #8) at org.springframework.integration.jms.JmsOutboundGateway.handleRequestMessage(JmsOutboundGateway.java:691)
14:38:05,377 INFO [stdout] (Deferred Command #8) at org.springframework.integration.handler.AbstractReplyProducingMessageHandler.handleMessageInternal(AbstractReplyProducingMessageHandler.java:99)
14:38:05,377 INFO [stdout] (Deferred Command #8) at org.springframework.integration.handler.AbstractMessageHandler.handleMessage(AbstractMessageHandler.java:78)
14:38:05,377 INFO [stdout] (Deferred Command #8) at org.springframework.integration.dispatcher.AbstractDispatcher.tryOptimizedDispatch(AbstractDispatcher.java:116)
14:38:05,377 INFO [stdout] (Deferred Command #8) at org.springframework.integration.dispatcher.UnicastingDispatcher.doDispatch(UnicastingDispatcher.java:101)
14:38:05,377 INFO [stdout] (Deferred Command #8) at org.springframework.integration.dispatcher.UnicastingDispatcher.dispatch(UnicastingDispatcher.java:97)
14:38:05,377 INFO [stdout] (Deferred Command #8) at org.springframework.integration.channel.AbstractSubscribableChannel.doSend(AbstractSubscribableChannel.java:77)
14:38:05,377 INFO [stdout] (Deferred Command #8) at org.springframework.integration.channel.AbstractMessageChannel.send(AbstractMessageChannel.java:287)
14:38:05,377 INFO [stdout] (Deferred Command #8) at org.springframework.integration.channel.AbstractMessageChannel.send(AbstractMessageChannel.java:245)
14:38:05,378 INFO [stdout] (Deferred Command #8) at org.springframework.messaging.core.GenericMessagingTemplate.doSend(GenericMessagingTemplate.java:115)
14:38:05,378 INFO [stdout] (Deferred Command #8) at org.springframework.messaging.core.GenericMessagingTemplate.doSendAndReceive(GenericMessagingTemplate.java:150)
14:38:05,378 INFO [stdout] (Deferred Command #8) at org.springframework.messaging.core.GenericMessagingTemplate.doSendAndReceive(GenericMessagingTemplate.java:45)
14:38:05,378 INFO [stdout] (Deferred Command #8) at org.springframework.messaging.core.AbstractMessagingTemplate.sendAndReceive(AbstractMessagingTemplate.java:42)
14:38:05,378 INFO [stdout] (Deferred Command #8) at org.springframework.messaging.core.AbstractMessagingTemplate.convertSendAndReceive(AbstractMessagingTemplate.java:79)
14:38:05,378 INFO [stdout] (Deferred Command #8) at org.springframework.messaging.core.AbstractMessagingTemplate.convertSendAndReceive(AbstractMessagingTemplate.java:70)
14:38:05,378 INFO [stdout] (Deferred Command #8) at org.springframework.integration.gateway.MessagingGatewaySupport.doSendAndReceive(MessagingGatewaySupport.java:321)
14:38:05,378 INFO [stdout] (Deferred Command #8) at org.springframework.integration.gateway.MessagingGatewaySupport.sendAndReceive(MessagingGatewaySupport.java:298)
14:38:05,378 INFO [stdout] (Deferred Command #8) at org.springframework.integration.gateway.GatewayProxyFactoryBean.invokeGatewayMethod(GatewayProxyFactoryBean.java:414)
14:38:05,378 INFO [stdout] (Deferred Command #8) at org.springframework.integration.gateway.GatewayProxyFactoryBean.doInvoke(GatewayProxyFactoryBean.java:374)
14:38:05,378 INFO [stdout] (Deferred Command #8) at org.springframework.integration.gateway.GatewayProxyFactoryBean.invoke(GatewayProxyFactoryBean.java:365)
14:38:05,378 INFO [stdout] (Deferred Command #8) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
14:38:05,379 INFO [stdout] (Deferred Command #8) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207)
14:38:05,379 INFO [stdout] (Deferred Command #8) at com.sun.proxy.$Proxy129.executeAsyncAction(Unknown Source)
14:38:05,379 INFO [stdout] (Deferred Command #8) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
14:38:05,379 INFO [stdout] (Deferred Command #8) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
14:38:05,379 INFO [stdout] (Deferred Command #8) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
14:38:05,379 INFO [stdout] (Deferred Command #8) at java.lang.reflect.Method.invoke(Method.java:606)
14:38:05,379 INFO [stdout] (Deferred Command #8) at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317)
14:38:05,379 INFO [stdout] (Deferred Command #8) at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)
14:38:05,379 INFO [stdout] (Deferred Command #8) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
14:38:05,379 INFO [stdout] (Deferred Command #8) at org.springframework.aop.framework.adapter.MethodBeforeAdviceInterceptor.invoke(MethodBeforeAdviceInterceptor.java:52)
14:38:05,379 INFO [stdout] (Deferred Command #8) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:168)
14:38:05,379 INFO [stdout] (Deferred Command #8) at org.springframework.aop.aspectj.AspectJAfterAdvice.invoke(AspectJAfterAdvice.java:43)
14:38:05,379 INFO [stdout] (Deferred Command #8) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:168)
14:38:05,380 INFO [stdout] (Deferred Command #8) at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92)
14:38:05,380 INFO [stdout] (Deferred Command #8) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
14:38:05,380 INFO [stdout] (Deferred Command #8) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207)
14:38:05,381 INFO [stdout] (Deferred Command #8) at com.sun.proxy.$Proxy232.executeAsyncAction(Unknown Source)
14:38:05,381 INFO [stdout] (Deferred Command #8) at com.etp.bpm.actionservice.BaseActionServiceInvocationCommand.sendRequest(BaseActionServiceInvocationCommand.java:165)
14:38:05,381 INFO [stdout] (Deferred Command #8) at com.etp.bpm.actionservice.AffinityCheckActionServiceInvocationCommand.executeCommand(AffinityCheckActionServiceInvocationCommand.java:94)
14:38:05,381 INFO [stdout] (Deferred Command #8) at com.etp.bpm.command.AbstractDeferredBpmCommand.call(AbstractDeferredBpmCommand.java:82)
14:38:05,381 INFO [stdout] (Deferred Command #8) at com.etp.bpm.command.AbstractDeferredBpmCommand.call(AbstractDeferredBpmCommand.java:1)
14:38:05,381 INFO [stdout] (Deferred Command #8) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
14:38:05,382 INFO [stdout] (Deferred Command #8) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
14:38:05,382 INFO [stdout] (Deferred Command #8) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
14:38:05,382 INFO [stdout] (Deferred Command #8) at java.lang.reflect.Method.invoke(Method.java:606)
14:38:05,382 INFO [stdout] (Deferred Command #8) at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317)
14:38:05,382 INFO [stdout] (Deferred Command #8) at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)
14:38:05,382 INFO [stdout] (Deferred Command #8) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
14:38:05,382 INFO [stdout] (Deferred Command #8) at org.springframework.transaction.interceptor.TransactionInterceptor.proceedWithInvocation(TransactionInterceptor.java:99)
14:38:05,382 INFO [stdout] (Deferred Command #8) at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:281)
14:38:05,382 INFO [stdout] (Deferred Command #8) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
14:38:05,382 INFO [stdout] (Deferred Command #8) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
14:38:05,382 INFO [stdout] (Deferred Command #8) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207)
14:38:05,382 INFO [stdout] (Deferred Command #8) at com.sun.proxy.$Proxy233.call(Unknown Source)
14:38:05,382 INFO [stdout] (Deferred Command #8) at java.util.concurrent.FutureTask.run(FutureTask.java:262)
14:38:05,382 INFO [stdout] (Deferred Command #8) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
14:38:05,382 INFO [stdout] (Deferred Command #8) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
14:38:05,382 INFO [stdout] (Deferred Command #8) at java.lang.Thread.run(Thread.java:745)
没有。看起来上游有人添加 priority
header 但作为 Long
,而不是 Integer
.
这就是它停止工作的原因。版本不匹配没有什么特别之处。
只需扫描您的应用程序中的 priority
单词,并尝试找出克服它的方法。
其中一个建议可以像 <header-filter header-names="priority">
就在 <int-jms:outbound-gateway>
前面。
早期版本的框架没有映射入站优先级。
这是在 4.0 中添加的 JIRA here。
headers.put(IntegrationMessageHeaderAccessor.PRIORITY, jmsMessage.getJMSPriority());
根据the API,它应该是一个int
。
但 HornetQ 似乎使用了其他东西(鉴于 API,不确定如何使用)。
作为work-around,正如@Artem所说,您可以将其过滤掉,或者将入站header映射器上的mapInboundPriority
属性设置为false
.我们添加此布尔值是为了解决此类问题。
请打开一个 JIRA Issue 以便我们可以准确地弄清楚 HornetQ 将其设置为什么。或者您可以在调试器中查看。
这可能是 HornetQ 的错误。
谢谢。
我正在将 Web 应用程序从 spring 3.1 迁移到 4.1。我们使用:
框架, 一体化, 批, 安全, 和网络服务,
在大多数情况下,这是一个相对轻松的过程;但是,我在集成方面遇到了一个问题。此 JMS 消息:
GenericMessage [payload=com.etp.bpm.services.jaxwsbindings.data.ProcessActionInstance@50be7b46, headers={errorChannel=org.springframework.messaging.core.GenericMessagingTemplate$TemporaryReplyChannel@98f5a14, jms_timestamp=1447280384929, determinantName=SeasonPeriod, replyChannel=org.springframework.messaging.core.GenericMessagingTemplate$TemporaryReplyChannel@98f5a14, processActionName=DerivationExecutionAction, jms_replyTo=HornetQQueue[asyncActionReplyQueue], jms_messageId=ID:4fd881ab-88c2-11e5-a7c1-a7dd640b56cc, timestamp=1447280384934, id=505ca511-88d0-e892-acdf-9bdc4330e68f, JMSXDeliveryCount=1, jms_redelivered=false, priority=4, determinantTypes=[Raw], jms_correlationId=e82424fd-3dab-4ef1-bad2-9a6ec7356a11_1, groups=[PrimaryDeterminantsGroup, 10 minutes, Weekly Prep Initial Settings]}]
导致此错误:
java.lang.Exception: The 'priority' header value must be an Integer.
当 spring 尝试验证 org.springframework.integration.IntegrationMessageHeaderAccessor 中的 header 值时,会抛出错误,随后进程失败:
else if (IntegrationMessageHeaderAccessor.SEQUENCE_NUMBER.equals(headerName)
|| IntegrationMessageHeaderAccessor.SEQUENCE_SIZE.equals(headerName)
|| IntegrationMessageHeaderAccessor.PRIORITY.equals(headerName)) {
Assert.isTrue(Integer.class.isAssignableFrom(headerValue.getClass()), "The '" + headerName
+ "' header value must be an Integer.");
}
我们的应用程序中没有任何 JMS 代码。 Spring 创建并处理所有消息,那么它如何创建一个它无法处理的 header?
我认为这可能是集成、integration-jms 和 jms-api 之间的版本不匹配问题,但我已经准备好了所有正确的 jar。任何建议将不胜感激。谢谢。 (请参阅下面的堆栈跟踪)
14:38:05,376 INFO [stdout] (Deferred Command #8) java.lang.Exception: The 'priority' header value must be an Integer.
14:38:05,376 INFO [stdout] (Deferred Command #8) at org.springframework.util.Assert.isTrue(Assert.java:65)
14:38:05,377 INFO [stdout] (Deferred Command #8) at org.springframework.integration.IntegrationMessageHeaderAccessor.verifyType(IntegrationMessageHeaderAccessor.java:109)
14:38:05,377 INFO [stdout] (Deferred Command #8) at org.springframework.messaging.support.MessageHeaderAccessor.setHeader(MessageHeaderAccessor.java:308)
14:38:05,377 INFO [stdout] (Deferred Command #8) at org.springframework.messaging.support.MessageHeaderAccessor.copyHeaders(MessageHeaderAccessor.java:393)
14:38:05,377 INFO [stdout] (Deferred Command #8) at org.springframework.integration.support.MessageBuilder.copyHeaders(MessageBuilder.java:154)
14:38:05,377 INFO [stdout] (Deferred Command #8) at org.springframework.integration.support.MessageBuilder.copyHeaders(MessageBuilder.java:42)
14:38:05,377 INFO [stdout] (Deferred Command #8) at org.springframework.integration.jms.JmsOutboundGateway.handleRequestMessage(JmsOutboundGateway.java:691)
14:38:05,377 INFO [stdout] (Deferred Command #8) at org.springframework.integration.handler.AbstractReplyProducingMessageHandler.handleMessageInternal(AbstractReplyProducingMessageHandler.java:99)
14:38:05,377 INFO [stdout] (Deferred Command #8) at org.springframework.integration.handler.AbstractMessageHandler.handleMessage(AbstractMessageHandler.java:78)
14:38:05,377 INFO [stdout] (Deferred Command #8) at org.springframework.integration.dispatcher.AbstractDispatcher.tryOptimizedDispatch(AbstractDispatcher.java:116)
14:38:05,377 INFO [stdout] (Deferred Command #8) at org.springframework.integration.dispatcher.UnicastingDispatcher.doDispatch(UnicastingDispatcher.java:101)
14:38:05,377 INFO [stdout] (Deferred Command #8) at org.springframework.integration.dispatcher.UnicastingDispatcher.dispatch(UnicastingDispatcher.java:97)
14:38:05,377 INFO [stdout] (Deferred Command #8) at org.springframework.integration.channel.AbstractSubscribableChannel.doSend(AbstractSubscribableChannel.java:77)
14:38:05,377 INFO [stdout] (Deferred Command #8) at org.springframework.integration.channel.AbstractMessageChannel.send(AbstractMessageChannel.java:287)
14:38:05,377 INFO [stdout] (Deferred Command #8) at org.springframework.integration.channel.AbstractMessageChannel.send(AbstractMessageChannel.java:245)
14:38:05,378 INFO [stdout] (Deferred Command #8) at org.springframework.messaging.core.GenericMessagingTemplate.doSend(GenericMessagingTemplate.java:115)
14:38:05,378 INFO [stdout] (Deferred Command #8) at org.springframework.messaging.core.GenericMessagingTemplate.doSendAndReceive(GenericMessagingTemplate.java:150)
14:38:05,378 INFO [stdout] (Deferred Command #8) at org.springframework.messaging.core.GenericMessagingTemplate.doSendAndReceive(GenericMessagingTemplate.java:45)
14:38:05,378 INFO [stdout] (Deferred Command #8) at org.springframework.messaging.core.AbstractMessagingTemplate.sendAndReceive(AbstractMessagingTemplate.java:42)
14:38:05,378 INFO [stdout] (Deferred Command #8) at org.springframework.messaging.core.AbstractMessagingTemplate.convertSendAndReceive(AbstractMessagingTemplate.java:79)
14:38:05,378 INFO [stdout] (Deferred Command #8) at org.springframework.messaging.core.AbstractMessagingTemplate.convertSendAndReceive(AbstractMessagingTemplate.java:70)
14:38:05,378 INFO [stdout] (Deferred Command #8) at org.springframework.integration.gateway.MessagingGatewaySupport.doSendAndReceive(MessagingGatewaySupport.java:321)
14:38:05,378 INFO [stdout] (Deferred Command #8) at org.springframework.integration.gateway.MessagingGatewaySupport.sendAndReceive(MessagingGatewaySupport.java:298)
14:38:05,378 INFO [stdout] (Deferred Command #8) at org.springframework.integration.gateway.GatewayProxyFactoryBean.invokeGatewayMethod(GatewayProxyFactoryBean.java:414)
14:38:05,378 INFO [stdout] (Deferred Command #8) at org.springframework.integration.gateway.GatewayProxyFactoryBean.doInvoke(GatewayProxyFactoryBean.java:374)
14:38:05,378 INFO [stdout] (Deferred Command #8) at org.springframework.integration.gateway.GatewayProxyFactoryBean.invoke(GatewayProxyFactoryBean.java:365)
14:38:05,378 INFO [stdout] (Deferred Command #8) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
14:38:05,379 INFO [stdout] (Deferred Command #8) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207)
14:38:05,379 INFO [stdout] (Deferred Command #8) at com.sun.proxy.$Proxy129.executeAsyncAction(Unknown Source)
14:38:05,379 INFO [stdout] (Deferred Command #8) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
14:38:05,379 INFO [stdout] (Deferred Command #8) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
14:38:05,379 INFO [stdout] (Deferred Command #8) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
14:38:05,379 INFO [stdout] (Deferred Command #8) at java.lang.reflect.Method.invoke(Method.java:606)
14:38:05,379 INFO [stdout] (Deferred Command #8) at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317)
14:38:05,379 INFO [stdout] (Deferred Command #8) at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)
14:38:05,379 INFO [stdout] (Deferred Command #8) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
14:38:05,379 INFO [stdout] (Deferred Command #8) at org.springframework.aop.framework.adapter.MethodBeforeAdviceInterceptor.invoke(MethodBeforeAdviceInterceptor.java:52)
14:38:05,379 INFO [stdout] (Deferred Command #8) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:168)
14:38:05,379 INFO [stdout] (Deferred Command #8) at org.springframework.aop.aspectj.AspectJAfterAdvice.invoke(AspectJAfterAdvice.java:43)
14:38:05,379 INFO [stdout] (Deferred Command #8) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:168)
14:38:05,380 INFO [stdout] (Deferred Command #8) at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92)
14:38:05,380 INFO [stdout] (Deferred Command #8) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
14:38:05,380 INFO [stdout] (Deferred Command #8) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207)
14:38:05,381 INFO [stdout] (Deferred Command #8) at com.sun.proxy.$Proxy232.executeAsyncAction(Unknown Source)
14:38:05,381 INFO [stdout] (Deferred Command #8) at com.etp.bpm.actionservice.BaseActionServiceInvocationCommand.sendRequest(BaseActionServiceInvocationCommand.java:165)
14:38:05,381 INFO [stdout] (Deferred Command #8) at com.etp.bpm.actionservice.AffinityCheckActionServiceInvocationCommand.executeCommand(AffinityCheckActionServiceInvocationCommand.java:94)
14:38:05,381 INFO [stdout] (Deferred Command #8) at com.etp.bpm.command.AbstractDeferredBpmCommand.call(AbstractDeferredBpmCommand.java:82)
14:38:05,381 INFO [stdout] (Deferred Command #8) at com.etp.bpm.command.AbstractDeferredBpmCommand.call(AbstractDeferredBpmCommand.java:1)
14:38:05,381 INFO [stdout] (Deferred Command #8) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
14:38:05,382 INFO [stdout] (Deferred Command #8) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
14:38:05,382 INFO [stdout] (Deferred Command #8) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
14:38:05,382 INFO [stdout] (Deferred Command #8) at java.lang.reflect.Method.invoke(Method.java:606)
14:38:05,382 INFO [stdout] (Deferred Command #8) at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317)
14:38:05,382 INFO [stdout] (Deferred Command #8) at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)
14:38:05,382 INFO [stdout] (Deferred Command #8) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
14:38:05,382 INFO [stdout] (Deferred Command #8) at org.springframework.transaction.interceptor.TransactionInterceptor.proceedWithInvocation(TransactionInterceptor.java:99)
14:38:05,382 INFO [stdout] (Deferred Command #8) at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:281)
14:38:05,382 INFO [stdout] (Deferred Command #8) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
14:38:05,382 INFO [stdout] (Deferred Command #8) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
14:38:05,382 INFO [stdout] (Deferred Command #8) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207)
14:38:05,382 INFO [stdout] (Deferred Command #8) at com.sun.proxy.$Proxy233.call(Unknown Source)
14:38:05,382 INFO [stdout] (Deferred Command #8) at java.util.concurrent.FutureTask.run(FutureTask.java:262)
14:38:05,382 INFO [stdout] (Deferred Command #8) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
14:38:05,382 INFO [stdout] (Deferred Command #8) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
14:38:05,382 INFO [stdout] (Deferred Command #8) at java.lang.Thread.run(Thread.java:745)
没有。看起来上游有人添加 priority
header 但作为 Long
,而不是 Integer
.
这就是它停止工作的原因。版本不匹配没有什么特别之处。
只需扫描您的应用程序中的 priority
单词,并尝试找出克服它的方法。
其中一个建议可以像 <header-filter header-names="priority">
就在 <int-jms:outbound-gateway>
前面。
早期版本的框架没有映射入站优先级。
这是在 4.0 中添加的 JIRA here。
headers.put(IntegrationMessageHeaderAccessor.PRIORITY, jmsMessage.getJMSPriority());
根据the API,它应该是一个int
。
但 HornetQ 似乎使用了其他东西(鉴于 API,不确定如何使用)。
作为work-around,正如@Artem所说,您可以将其过滤掉,或者将入站header映射器上的mapInboundPriority
属性设置为false
.我们添加此布尔值是为了解决此类问题。
请打开一个 JIRA Issue 以便我们可以准确地弄清楚 HornetQ 将其设置为什么。或者您可以在调试器中查看。
这可能是 HornetQ 的错误。
谢谢。