Java 为什么在默认Spring云流配置中更改Spring集成消息方法处理行为

Java 为什么在默认Spring云流配置中更改Spring集成消息方法处理行为,java,spring-integration,spring-cloud-stream,spring-integration-dsl,Java,Spring Integration,Spring Cloud Stream,Spring Integration Dsl,我有一个已经使用Spring集成(最新版本5.1.6)的应用程序。以及类似以下配置的流: @Configuration public class SomeConfigClass { ... @MessagingGateway(name = "someGateway") interface Gateway { @Gateway(requestChannel = "inboundChannel") @Payload("T(java.time.Zoned

我有一个已经使用Spring集成(最新版本5.1.6)的应用程序。以及类似以下配置的流:

@Configuration
public class SomeConfigClass {
...
    @MessagingGateway(name = "someGateway")
    interface Gateway {
        @Gateway(requestChannel = "inboundChannel")
        @Payload("T(java.time.ZonedDateTime).now()")
        void replicate();
    }

    @Bean
    public DirectChannel inboundChannel() {
        return MessageChannels.direct().get();
    }

    @Bean
    public IntegrationFlow someFlow() {
        return IntegrationFlows.from(inboundChannel())
                .handle(someHandler())
                .channel(OUT)
                .get();
    }

    @Bean
    public SomeHandler someHandler() {
        return new SomeHandler();
    }
}

公共类SomeHandler实现GenericHandler{
@凌驾
公共消息句柄(最终对象有效负载,
最终消息头){
...
返回消息生成器
.withPayload(someList)
.CopyHeader(标题)
.setHeader(“自定义”,customHeader)
.build();
}
}
一切正常

如果我试图在初始化的上下文中找到
integrationArgumentResolverMessageConverter
bean,我会看到下一个转换器:

  • MappingJackson2MessageConverter
  • ByteArrayMessageConverter
  • ObjectStringMessageConverter
  • GenericMessageConverter
之后,我添加到我的pom依赖项SpringCloudStream2.1.2依赖项和KinesisBinder 1.2.0。默认情况下配置绑定

应用程序启动,但当我尝试处理现有流时失败,原因如下:

EL1004E:方法调用:在org.springframework.expression.spel.ast.MethodReference.FindAccessorFormMethod(MethodReference.java:225)的p.a.c.k.a.g.e.SomeHandler类型上找不到方法句柄(java.time.ZonedDateTime,org.springframework.messaging.MessageHeaders) 位于org.springframework.expression.spel.ast.MethodReference.getValueInternal(MethodReference.java:134) 位于org.springframework.expression.spel.ast.MethodReference.access$000(MethodReference.java:54) 位于org.springframework.expression.spel.ast.MethodReference$MethodValueRef.getValue(MethodReference.java:390) 位于org.springframework.expression.spel.ast.CompoundExpression.getValueInternal(CompoundExpression.java:90) 位于org.springframework.expression.spel.ast.SpelNodeImpl.getTypedValue(SpelNodeImpl.java:114) 位于org.springframework.expression.spel.standard.SpelExpression.getValue(SpelExpression.java:365) 位于org.springframework.integration.util.AbstractExpressionEvaluator.evaluateExpression(AbstractExpressionEvaluator.java:172) 位于org.springframework.integration.util.AbstractExpressionEvaluator.evaluateExpression(AbstractExpressionEvaluator.java:160) 位于org.springframework.integration.handler.support.MessaginMethodInvokerHelper.InvokeeExpression(MessaginMethodInvokerHelper.java:664) 位于org.springframework.integration.handler.support.MessaginMethodInvokerHelper.invokeHandlerMethod(MessaginMethodInvokerHelper.java:655) 位于org.springframework.integration.handler.support.MessaginMethodInvokerHelper.processInternal(MessaginMethodInvokerHelper.java:491) 位于org.springframework.integration.handler.support.MessaginMethodInvokerHelper.process(MessaginMethodInvokerHelper.java:362) 位于org.springframework.integration.handler.MethodInvokingMessageProcessor.processMessage(MethodInvokingMessageProcessor.java:106) 位于org.springframework.integration.handler.ServiceActivationHandler.HandlerRequestMessage(ServiceActivationHandler.java:93) 位于org.springframework.integration.handler.AbstractReplyProducingMessageHandler.handleMessageInternal(AbstractReplyProducingMessageHandler.java:123) 位于org.springframework.integration.handler.AbstractMessageHandler.handleMessage(AbstractMessageHandler.java:169) 位于org.springframework.integration.dispatcher.AbstractDispatcher.tryoOptimizedDispatch(AbstractDispatcher.java:115) 位于org.springframework.integration.dispatcher.UnicastingDispatcher.doDispatch(UnicastingDispatcher.java:132) 位于org.springframework.integration.dispatcher.UnicastingDispatcher.dispatcher(UnicastingDispatcher.java:105) 位于org.springframework.integration.channel.AbstractSubscribableChannel.doSend(AbstractSubscribableChannel.java:73) 位于org.springframework.integration.channel.AbstractMessageChannel.send(AbstractMessageChannel.java:453) 位于org.springframework.integration.channel.AbstractMessageChannel.send(AbstractMessageChannel.java:401) 位于org.springframework.messaging.core.GenericMessagingTemplate.doSend(GenericMessagingTemplate.java:187) 位于org.springframework.messaging.core.GenericMessagingTemplate.doSend(GenericMessagingTemplate.java:166) 位于org.springframework.messaging.core.GenericMessagingTemplate.doSend(GenericMessagingTemplate.java:47) 位于org.springframework.messaging.core.AbstractMessageSendingTemplate.send(AbstractMessageSendingTemplate.java:109) 位于org.springframework.messaging.core.AbstractMessageSendingTemplate.convertAndSend(AbstractMessageSendingTemplate.java:151) 位于org.springframework.messaging.core.AbstractMessageSendingTemplate.convertAndSend(AbstractMessageSendingTemplate.java:143) 位于org.springframework.integration.gateway.MessagingGatewaySupport.send(MessagingGatewaySupport.java:413) 位于org.springframework.integration.gateway.GatewayProxyFactoryBean.invokeGatewayMethod(GatewayProxyFactoryBean.java:533) 位于org.springframework.integration.gateway.GatewayProxyFactoryBean.doInvoke(GatewayProxyFactoryBean.java:473) 位于org.springframework.integration.gateway.GatewayProxyFactoryBean.invoke(GatewayProxyFactoryBean.java:463) 位于org.springframework.aop.framework.ReflectiveMethodInvocation.procedue(ReflectiveMethodInvocation.java:186) 位于org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212) 位于com.sun.proxy.$Proxy444.replicate(未知源)

当我试图从初始化的上下文中获取相同的
integrationArgumentResolverMessageConverter
bean时,我看到了下一个链:

  • ApplicationJsonMessageMarshallingConverter
  • TupleJsonMessageConverter
  • ByteArrayMessa
    
    public class SomeHandler implements GenericHandler<Object> {
        @Override
        public Message<List<String>> handle(final Object payload, 
                                            final MessageHeaders headers) {
            ...
            return MessageBuilder
                    .withPayload(someList)
                    .copyHeaders(headers)
                    .setHeader("custom", customHeader)
                    .build();
        }
    }
    
    
    org.springframework.messaging.converter.MessageConversionException: Could not read JSON: Unexpected character ('-' (code 45)): Expected space separating root-level values
     at [Source: (String)"2019-09-04T01:26:20.202Z[UTC]"; line: 1, column: 6]; nested exception is com.fasterxml.jackson.core.JsonParseException: Unexpected character ('-' (code 45)): Expected space separating root-level values
     at [Source: (String)"2019-09-04T01:26:20.202Z[UTC]"; line: 1, column: 6], failedMessage=GenericMessage [payload=2019-09-04T01:26:20.202Z[UTC], headers={spanTraceId=3f87b9afc373308a, spanId=3f87b9afc373308a, nativeHeaders={spanTraceId=[3f87b9afc373308a], spanId=[3f87b9afc373308a], spanSampled=[1]}, X-B3-SpanId=3f87b9afc373308a, X-B3-Sampled=1, X-B3-TraceId=3f87b9afc373308a, id=3fbe87e3-31c4-4d21-c3fb-506c018c0e25, spanSampled=1, timestamp=1567560380202}]