Kery Hu
Kery Hu

Reputation: 5906

spring-cloud-stream Field error in object 'spring.cloud.stream' on field 'bindings[input]'

I study the spring-cloud-stream , met some problems .

@EnableBinding(Source.class)
public class SendSource {

    private String format = "yyyy-MM-dd HH:mm:ss";

    @Bean
    @InboundChannelAdapter(value = Source.OUTPUT, poller = @Poller(fixedDelay = "5000", maxMessagesPerPoll = "1"))
     public MessageSource<String>  send(){

        return ()->new GenericMessage<>(new SimpleDateFormat(this.format).format(new Date()));

    }

And the sink:

@EnableBinding(Sink.class)
public class SinkMoudle {
    @ServiceActivator(inputChannel=Sink.INPUT)
    public void loggerSink(Object payload) {
        System.out.println("Received: " + payload);
    }
}

when starting the application , the redis-cli :

1459914852.842206 [0 127.0.0.1:49630] "PING"
1459914857.627916 [0 127.0.0.1:49630] "ZRANGEBYSCORE" "groups.testtock" "1.0" "1.7976931348623157E308"
1459914862.633039 [0 127.0.0.1:49630] "ZRANGEBYSCORE" "groups.testtock" "1.0" "1.7976931348623157E308"

The problem is :

1 : the redis-cli exports should like "2016-04-06 12:07:19" , but it not

2 : the console error :

2016-04-06 12:16:02.505 ERROR 74368 --- [           main] o.s.b.b.PropertiesConfigurationFactory   : Properties configuration failed validation
    2016-04-06 12:16:02.505 ERROR 74368 --- [           main] o.s.b.b.PropertiesConfigurationFactory   : Field error in object 'spring.cloud.stream' on field 'bindings[input]': rejected value [testtock]; codes [typeMismatch.spring.cloud.stream.bindings[input],typeMismatch.spring.cloud.stream.bindings,typeMismatch.bindings[input],typeMismatch.bindings,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [spring.cloud.stream.bindings[input],bindings[input]]; arguments []; default message [bindings[input]]]; default message [Failed to convert property value of type [java.lang.String] to required type [org.springframework.cloud.stream.config.BindingProperties] for property 'bindings[input]'; nested exception is java.lang.IllegalStateException: Cannot convert value of type [java.lang.String] to required type [org.springframework.cloud.stream.config.BindingProperties] for property 'bindings[input]': no matching editors or conversion strategy found]
    2016-04-06 12:16:02.562  INFO 74368 --- [           main] o.s.s.c.ThreadPoolTaskScheduler          : Initializing ExecutorService  'taskScheduler'
    2016-04-06 12:16:02.604 ERROR 74368 --- [           main] o.s.b.b.PropertiesConfigurationFactory   : Properties configuration failed validation
    2016-04-06 12:16:02.604 ERROR 74368 --- [           main] o.s.b.b.PropertiesConfigurationFactory   : Field error in object 'spring.cloud.stream' on field 'bindings[input]': rejected value [testtock]; codes [typeMismatch.spring.cloud.stream.bindings[input],typeMismatch.spring.cloud.stream.bindings,typeMismatch.bindings[input],typeMismatch.bindings,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [spring.cloud.stream.bindings[input],bindings[input]]; arguments []; default message [bindings[input]]]; default message [Failed to convert property value of type [java.lang.String] to required type [org.springframework.cloud.stream.config.BindingProperties] for property 'bindings[input]'; nested exception is java.lang.IllegalStateException: Cannot convert value of type [java.lang.String] to required type [org.springframework.cloud.stream.config.BindingProperties] for property 'bindings[input]': no matching editors or conversion strategy found]
    2016-04-06 12:16:02.604  WARN 74368 --- [           main] ationConfigEmbeddedWebApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'bindingService' defined in class path resource [org/springframework/cloud/stream/config/ChannelBindingServiceConfiguration.class]: Unsatisfied dependency expressed through constructor argument with index 0 of type [org.springframework.cloud.stream.config.ChannelBindingServiceProperties]: Error creating bean with name 'spring.cloud.stream.CONFIGURATION_PROPERTIES': Could not bind properties to ChannelBindingServiceProperties (prefix=spring.cloud.stream, ignoreInvalidFields=false, ignoreUnknownFields=true, ignoreNestedProperties=false); nested exception is org.springframework.validation.BindException: org.springframework.boot.bind.RelaxedDataBinder$RelaxedBeanPropertyBindingResult: 1 errors
    Field error in object 'spring.cloud.stream' on field 'bindings[input]': rejected value [testtock]; codes [typeMismatch.spring.cloud.stream.bindings[input],typeMismatch.spring.cloud.stream.bindings,typeMismatch.bindings[input],typeMismatch.bindings,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [spring.cloud.stream.bindings[input],bindings[input]]; arguments []; default message [bindings[input]]]; default message [Failed to convert property value of type [java.lang.String] to required type [org.springframework.cloud.stream.config.BindingProperties] for property 'bindings[input]'; nested exception is java.lang.IllegalStateException: Cannot convert value of type [java.lang.String] to required type [org.springframework.cloud.stream.config.BindingProperties] for property 'bindings[input]': no matching editors or conversion strategy found]; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'spring.cloud.stream.CONFIGURATION_PROPERTIES': Could not bind properties to ChannelBindingServiceProperties (prefix=spring.cloud.stream, ignoreInvalidFields=false, ignoreUnknownFields=true, ignoreNestedProperties=false); nested exception is org.springframework.validation.BindException: org.springframework.boot.bind.RelaxedDataBinder$RelaxedBeanPropertyBindingResult: 1 errors
    Field error in object 'spring.cloud.stream' on field 'bindings[input]': rejected value [testtock]; codes [typeMismatch.spring.cloud.stream.bindings[input],typeMismatch.spring.cloud.stream.bindings,typeMismatch.bindings[input],typeMismatch.bindings,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [spring.cloud.stream.bindings[input],bindings[input]]; arguments []; default message [bindings[input]]]; default message [Failed to convert property value of type [java.lang.String] to required type [org.springframework.cloud.stream.config.BindingProperties] for property 'bindings[input]'; nested exception is java.lang.IllegalStateException: Cannot convert value of type [java.lang.String] to required type [org.springframework.cloud.stream.config.BindingProperties] for property 'bindings[input]': no matching editors or conversion strategy found]
    2016-04-06 12:16:02.605  INFO 74368 --- [           main] o.s.s.c.ThreadPoolTaskScheduler          : Shutting down ExecutorService 'taskScheduler'
    2016-04-06 12:16:02.611  INFO 74368 --- [           main] o.apache.catalina.core.StandardService   : Stopping service Tomcat
    2016-04-06 12:16:02.679 ERROR 74368 --- [           main] o.s.boot.SpringApplication               : Application startup failed

Upvotes: 1

Views: 2633

Answers (1)

Ilayaperumal Gopinathan
Ilayaperumal Gopinathan

Reputation: 4179

It looks like you are trying to use environment variables to set the binding properties. If so, you will run into issue mentioned here As suggested in there, you can use SPRING_APPLICATION_JSON to pass the env variables.

Upvotes: 1

Related Questions