xenoterracide
06/18/2019, 5:30 PM@Configuration
open class MessagingConfig {
@Autowired
open fun myFactory(factory: SimpleRabbitListenerContainerFactory) {
factory.setDefaultRequeueRejected(false)
factory.setAfterReceivePostProcessors(MessagePostProcessor {
it.messageProperties.contentType = MediaType.APPLICATION_JSON_VALUE
return@MessagePostProcessor it
})
}
@Bean
open fun jackson2Json(om: ObjectMapper): SmartMessageConverter {
return Jackson2JsonMessageConverter(om)
}
@Bean
open fun mappingJackson2(om: ObjectMapper): MappingJackson2MessageConverter {
val mc = MappingJackson2MessageConverter()
mc.objectMapper = om
return mc
}
@Bean
open fun defaultMessageHandlerMethodFactory(jackson: MappingJackson2MessageConverter): DefaultMessageHandlerMethodFactory {
val factory = DefaultMessageHandlerMethodFactory()
factory.setMessageConverter(jackson)
return factory
}
@Bean
open fun builder(): Jackson2ObjectMapperBuilderCustomizer {
return Jackson2ObjectMapperBuilderCustomizer {
it.modules(JavaTimeModule(), KotlinModule())
it.featuresToDisable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)
}
}
@Configuration
open class RabbitConfigurer(val dmhmf: DefaultMessageHandlerMethodFactory) : RabbitListenerConfigurer {
override fun configureRabbitListeners(registrar: RabbitListenerEndpointRegistrar?) {
registrar?.messageHandlerMethodFactory = dmhmf
}
}
}