0

Mit Transformers.toJson() mein json Datum wie folgt aussieht:Aufschalten fasterxml jackson ObjectMapper verwendet von Spring Integration dsl

"CreatedDate": { "Jahr": 2017, "Monat": "Oktober", "monthValue "10," DayOfMonth ": 25," Stunde ": 7," Minute ": 57," Sekunde ": 36," Nano ": 972000000," DayOfWeek ":" MITTWOCH "," DayOfYear ": 298," Chronologie ": {" calendarType ":" ISO8601" , "id": "ISO"}}

Hier ist die ausgehende ampq Konfiguration:

@Bean 
public IntegrationFlow outboundCdrRabbitFlowDefinition() { 
    return IntegrationFlows.from(CHANNEL_NAME) 
      .transform(Transformers.toJson()) 
      .handle(Amqp.outboundAdapter(new RabbitTemplate(cachingConnectionFactory)) 
        .routingKey("routing-key")) 
      .get(); 
} 

der Verbraucher des Kaninchens Warteschlange erwartet das Format „YYYY MM-d d'T'HH: mm: ss.SSSZ "

Gibt es eine Möglichkeit, den Standard-ObjectMapper, der von der Spring-Integration verwendet wird, zu überschreiben?

Zum Beispiel habe ich die diese Konfiguration in meiner Web-api Config, die WebMvcConfigurerAdapter erweitert:

@Bean 
public ObjectMapper objectMapper() { 
    ObjectMapper mapper = new ObjectMapper(); 
    mapper.setTimeZone(UTC_TIME_ZONE); 
    mapper.setDateFormat(ISO_8601_DATE_FORMAT); 
    mapper.registerModule(new Jdk8Module()); 
    mapper.registerModule(new JavaTimeModule()); 
    mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); 
    return mapper; 
} 

@Bean 
public MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter() { 
    MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter(); 
    mappingJackson2HttpMessageConverter.setObjectMapper(objectMapper()); 
    return mappingJackson2HttpMessageConverter; 
} 

@Override 
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { 
    converters.add(mappingJackson2HttpMessageConverter()); 
    super.configureMessageConverters(converters); 
} 

Gibt es eine Möglichkeit, die objectMapper Bohne in Spring Integration wieder zu verwenden, so dass die Mapping-Konfiguration die gleiche über alle meine Outbound ist Endpunkte, Web API http oder Integration Ampq?

Antwort

1

Es ist eine überladene Version der Transformers.toJson():

Transformers.toJson(new Jackson2JsonObjectMapper(objectMapper)) 
Verwandte Themen