java – postReceive on channel’outputChannel’,message为nul
发布时间:2020-12-15 02:14:56 所属栏目:Java 来源:网络整理
导读:我有一个 spring集成应用程序,它使用HttpRequestHandlingMessagingGateway接受json请求将它发送到变换器然后服务激活器,然后由PollableChannel接收消息并发回 但是我收到备用请求的响应,我正在跟踪模式运行应用程序记录器,如@GaryRussell在其他问题上建议并
我有一个
spring集成应用程序,它使用HttpRequestHandlingMessagingGateway接受json请求将它发送到变换器然后服务激活器,然后由PollableChannel接收消息并发回
但是我收到备用请求的响应,我正在跟踪模式运行应用程序记录器,如@GaryRussell在其他问题上建议并获得以下堆栈跟踪 从header-richher中删除output-channel时,我收到以下异常: service activator . . .HolidaysAvailableResponse [holidayCodes=[HolidayCode [code=NEW-YEARS-DAY-ACTUAL,description=New Year's Day],HolidayCode [code=NEW-YEARS-DAY-OBSERVED,HolidayCode [code=DAY-AFTER-NEW-YEARS-DAY,description=Day After New Year's Day (QC)],HolidayCode [code=EPIPHANY,description=Epiphany],HolidayCode [code=QUEBEC-FLAG-DAY,description=Quebec Flag Day],HolidayCode [code=GROUNDHOG-DAY,description=Groundhog Day],HolidayCode [code=VALENTINES-DAY,description=Valentine's Day],HolidayCode [code=FLAG-DAY,description=Flag Day],HolidayCode [code=ISLANDER-DAY,description=Islander Day (PE)],HolidayCode [code=HERITAGE-DAY-YT,description=Heritage Day (YT)],HolidayCode [code=LOUIS-RIEL-DAY,description=Louis Riel Day (MB)],HolidayCode [code=FAMILY-DAY,description=Family Day (AB,ON,SK)],HolidayCode [code=ST-PATRICKS-DAY-ACTUAL,description=St. Patrick's Day],HolidayCode [code=ST-PATRICKS-DAY-OBSERVED,description=St. Patrick's Day (NL)],HolidayCode [code=COMMONWEALTH-DAY,description=Commonwealth Day],HolidayCode [code=EASTER-ACTUAL,description=Easter Sunday],HolidayCode [code=EASTER-OBSERVED,description=Easter Monday],HolidayCode [code=GOOD-FRIDAY,description=Good Friday],HolidayCode [code=SHROVE-TUESDAY,description=Shrove Tuesday (Pancake Day)],HolidayCode [code=ASH-WEDNESDAY,description=Ash Wednesday],HolidayCode [code=PALM-SUNDAY,description=Palm Sunday],HolidayCode [code=MAUNDY-THURSDAY,description=Maundy Thursday],HolidayCode [code=VIMY-RIDGE-DAY,description=Vimy Ridge Day],HolidayCode [code=VICTORIA-DAY,description=Victoria Day],HolidayCode [code=NATIONAL-PATRIOTES-DAY,description=National Patriotes Day (QC)],HolidayCode [code=NATIONAL-ABORIGINAL-DAY-ACTUAL,description=National Aboriginal Day (NT)],HolidayCode [code=NATIONAL-ABORIGINAL-DAY-OBSERVED,HolidayCode [code=NATIONAL-DAY-ACTUAL,description=National Day (QC)],HolidayCode [code=NATIONAL-DAY-OBSERVED,HolidayCode [code=CANADA-DAY-ACTUAL,description=Canada Day],HolidayCode [code=CANADA-DAY-OBSERVED,HolidayCode [code=NUNAVUT-DAY-ACTUAL,description=Nunavut Day],HolidayCode [code=NUNAVUT-DAY-OBSERVED,HolidayCode [code=BRITISH-COLUMBIA-DAY,description=British Columbia Day (BC)],HolidayCode [code=HERITAGE-DAY-AB,description=Heritage Day (AB)],HolidayCode [code=CIVIC-HOLIDAY,description=Civic Holiday (MB,NT,HolidayCode [code=NEW-BRUNSWICK-DAY,description=New Brunswick Day (NB)],HolidayCode [code=GOLD-CUP-PARADE-DAY,description=Gold Cup Parade (PE)],HolidayCode [code=LABOUR-DAY,description=Labour Day],HolidayCode [code=THANKSGIVING-DAY,description=Thanksgiving Day],HolidayCode [code=HALLOWEEN,description=Halloween],HolidayCode [code=REMEMBERANCE-DAY-ACTUAL,description=Rememberance Day],HolidayCode [code=REMEMBERANCE-DAY-OBSERVED,HolidayCode [code=CHRISTMAS-ACTUAL,description=Christmas],HolidayCode [code=CHRISTMAS-OBSERVED,HolidayCode [code=BOXING-DAY-ACTUAL,description=Boxing Day],HolidayCode [code=BOXING-DAY-OBSERVED,HolidayCode [code=NEW-YEARS-EVE,description=New Year's Eve]]] DEBUG 2016-05-31 19:47:42,976 [http-bio-8088-exec-4] (AbstractMessageHandler.java:72) (handleMessage) - org.springframework.integration.transformer.MessageTransformingHandler#0 received message: GenericMessage [payload=HolidaysAvailableResponse [holidayCodes=[HolidayCode [code=NEW-YEARS-DAY-ACTUAL,description=New Year's Eve]]],headers={timestamp=1464704262960,id=b8e76d8a-97f7-c7a6-0c7a-a58d3c2ce440}] DEBUG 2016-05-31 19:47:42,976 [http-bio-8088-exec-4] (MessagingGatewaySupport.java:365) (doSendAndReceive) - failure occurred in gateway sendAndReceive: ; nested exception is org.springframework.integration.dispatcher.AggregateMessageDeliveryException: All attempts to deliver Message to MessageHandlers failed.; nested exception is org.springframework.messaging.MessagingException: ; nested exception is org.springframework.messaging.core.DestinationResolutionException: no output-channel or replyChannel header available. Multiple causes: ; nested exception is org.springframework.messaging.core.DestinationResolutionException: no output-channel or replyChannel header available ; nested exception is org.springframework.messaging.core.DestinationResolutionException: no output-channel or replyChannel header available See below for the stacktrace of the first cause. DEBUG 2016-05-31 19:47:42,976 [http-bio-8088-exec-4] (AbstractHandlerExceptionResolver.java:134) (resolveException) - Resolving exception from handler [httpGatewayPost]: org.springframework.messaging.MessageHandlingException: ; nested exception is org.springframework.integration.dispatcher.AggregateMessageDeliveryException: All attempts to deliver Message to MessageHandlers failed.; nested exception is org.springframework.messaging.MessagingException: ; nested exception is org.springframework.messaging.core.DestinationResolutionException: no output-channel or replyChannel header available. Multiple causes: ; nested exception is org.springframework.messaging.core.DestinationResolutionException: no output-channel or replyChannel header available ; nested exception is org.springframework.messaging.core.DestinationResolutionException: no output-channel or replyChannel header available See below for the stacktrace of the first cause. DEBUG 2016-05-31 19:47:42,976 [http-bio-8088-exec-4] (AbstractHandlerExceptionResolver.java:134) (resolveException) - Resolving exception from handler [httpGatewayPost]: org.springframework.messaging.MessageHandlingException: ; nested exception is org.springframework.integration.dispatcher.AggregateMessageDeliveryException: All attempts to deliver Message to MessageHandlers failed.; nested exception is org.springframework.messaging.MessagingException: ; nested exception is org.springframework.messaging.core.DestinationResolutionException: no output-channel or replyChannel header available. Multiple causes: ; nested exception is org.springframework.messaging.core.DestinationResolutionException: no output-channel or replyChannel header available ; nested exception is org.springframework.messaging.core.DestinationResolutionException: no output-channel or replyChannel header available See below for the stacktrace of the first cause. TRACE 2016-05-31 19:47:42,976 [http-bio-8088-exec-4] (FrameworkServlet.java:1058) (resetContextHolders) - Cleared thread-bound request context: org.apache.catalina.connector.RequestFacade@4106a123 DEBUG 2016-05-31 19:47:42,976 [http-bio-8088-exec-4] (FrameworkServlet.java:989) (processRequest) - Could not complete request org.springframework.messaging.MessageHandlingException: ; nested exception is org.springframework.integration.dispatcher.AggregateMessageDeliveryException: All attempts to deliver Message to MessageHandlers failed.; nested exception is org.springframework.messaging.MessagingException: ; nested exception is org.springframework.messaging.core.DestinationResolutionException: no output-channel or replyChannel header available. Multiple causes: ; nested exception is org.springframework.messaging.core.DestinationResolutionException: no output-channel or replyChannel header available ; nested exception is org.springframework.messaging.core.DestinationResolutionException: no output-channel or replyChannel header available See below for the stacktrace of the first cause. at org.springframework.integration.handler.MethodInvokingMessageProcessor.processMessage(MethodInvokingMessageProcessor.java:78) at org.springframework.integration.handler.ServiceActivatingHandler.handleRequestMessage(ServiceActivatingHandler.java:71) at org.springframework.integration.handler.AbstractReplyProducingMessageHandler.handleMessageInternal(AbstractReplyProducingMessageHandler.java:99) at org.springframework.integration.handler.AbstractMessageHandler.handleMessage(AbstractMessageHandler.java:78) at org.springframework.integration.dispatcher.AbstractDispatcher.tryOptimizedDispatch(AbstractDispatcher.java:116) at org.springframework.integration.dispatcher.UnicastingDispatcher.doDispatch(UnicastingDispatcher.java:101) at org.springframework.integration.dispatcher.UnicastingDispatcher.dispatch(UnicastingDispatcher.java:97) at org.springframework.integration.channel.AbstractSubscribableChannel.doSend(AbstractSubscribableChannel.java:77) at org.springframework.integration.channel.AbstractMessageChannel.send(AbstractMessageChannel.java:277) at org.springframework.messaging.core.GenericMessagingTemplate.doSend(GenericMessagingTemplate.java:115) at org.springframework.messaging.core.GenericMessagingTemplate.doSendAndReceive(GenericMessagingTemplate.java:150) at org.springframework.messaging.core.GenericMessagingTemplate.doSendAndReceive(GenericMessagingTemplate.java:45) at org.springframework.messaging.core.AbstractMessagingTemplate.sendAndReceive(AbstractMessagingTemplate.java:42) at org.springframework.integration.gateway.MessagingGatewaySupport.doSendAndReceive(MessagingGatewaySupport.java:357) at org.springframework.integration.gateway.MessagingGatewaySupport.sendAndReceiveMessage(MessagingGatewaySupport.java:328) at org.springframework.integration.http.inbound.HttpRequestHandlingEndpointSupport.actualDoHandleRequest(HttpRequestHandlingEndpointSupport.java:492) at org.springframework.integration.http.inbound.HttpRequestHandlingEndpointSupport.doHandleRequest(HttpRequestHandlingEndpointSupport.java:389) at org.springframework.integration.http.inbound.HttpRequestHandlingMessagingGateway.handleRequest(HttpRequestHandlingMessagingGateway.java:103) at org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter.handle(HttpRequestHandlerAdapter.java:51) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:943) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:877) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966) at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:868) at javax.servlet.http.HttpServlet.service(HttpServlet.java:650) 解决方法
我不明白这是怎么回事:
DEBUG 2016-05-29 23:31:35,681 [http-bio-8080-exec-3] (AbstractMessageChannel.java:383) (postSend) - postSend (sent=true) on channel 'outputChannel',message: GenericMessage [payload=HolidaysAvailableResponse [holidayCodes=[HolidayCode [code=NEW-YEARS-DAY-ACTUAL. . .(POJO),headers={content-type=application/json,id=da43d6d2-2618-8581-4fcc-6aff7e79b6e1,timestamp=1464544895681}] ... TRACE 2016-05-29 23:31:35,807 [http-bio-8080-exec-3] (AbstractMessageChannel.java:426) (postReceive) - postReceive on channel 'outputChannel',message is null 除非有另一个线程(不是日志记录)从outputChannel消耗或以某种方式有两个“outputChannel”bean – 这应该是不可能的. 也就是说,这段代码很奇怪…… @ServiceActivator(inputChannel = "requestChannel") public Message<?> echo(Message<String> message) { // log.info("request :: " + message.getPayload()); jsonToObjectTransformerChannel.send(message); // inputChannel.send(message); Message<?> responseMessage = outputChannel.receive(100); System.out.println("final response recieved :: "); System.out.println(responseMessage); return responseMessage; } 这并不是真的打算用这样的服务激活器发送和接收消息(尽管它不应该导致任何问题). 我有兴趣知道如果你摆脱outputChannel从中删除输出通道会发生什么 <header-enricher input-channel="headerEnricherChannel"> <header name="content-type" value="application/json" /> </header-enricher> 并简单地将requestChannel连接到Json到对象转换器. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |