Laurent Chiarello created CAMEL-9431:
----------------------------------------

             Summary: TypeConverter autoconfiguration leads to invalid shutdown 
sequence
                 Key: CAMEL-9431
                 URL: https://issues.apache.org/jira/browse/CAMEL-9431
             Project: Camel
          Issue Type: Bug
          Components: camel-spring-boot
    Affects Versions: 2.16.1
            Reporter: Laurent Chiarello
         Attachments: CamelSpringBootShutdownTest.java

When using autoconfiguration provided by the {{camel-spring-boot}} artifact,  a 
{{TypeConverter}} bean is automatically registered into the Spring context: 

{code:title=TypeConversionConfiguration.java}
@Bean
TypeConverter typeConverter(CamelContext camelContext) {
    return camelContext.getTypeConverter();
}
{code}

The returned bean is an instance of {{DefaultTypeConverter}}, which in turn 
implements {{ServiceSupport}} and its method {{public void shutdown()}}. This 
method is infered as a _destroy-method_ by Spring, and called during the 
shutdown of the ApplicationContext. 

As a consequence, the TypeConverter will be destroyed before the CamelContext, 
effectively preventing any type conversion support for the inflight messages 
that have still to be processed during the graceful shutdown period of Camel. 

AFAIK the simple fix would be to disable the destroy-method inference using 
{{@Bean(destroyMethod="")}}. This will let Camel have a chance to perform a 
clean shutdown in the right sequence. 

As a workaround, it is possible to entirely disable the registration of the 
type converter in Spring using the property
{{camel.springboot.type-conversion = false}}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to