Java 8 Дата/Тип времени сериализация не удаетсяJAVA

Программисты JAVA общаются здесь
Anonymous
Java 8 Дата/Тип времени сериализация не удается

Сообщение Anonymous »

Я использую Java 21 с Spring Boot 3 и Spring 6, чтобы отправить пользовательский объект в очередь SQS. < /p>

Код: Выделить всё

public class Event {
String eventName;
Instant dateTime;
}
< /code>
My Sqs Message Sulderer настроен следующим образом: < /p>
@SqsListener(value = "${sqs.queue.event.in}", acknowledgementMode = SqsListenerAcknowledgementMode.MANUAL)
public void receiveHourEvent(Acknowledgement acknowledgement, String event) {
///do something
}

< /code>
Для правильной обработки сериализации и десериализации JSON я настроил пользовательский объект -маппер в моей конфигурации пружины: < /p>
public class MyConfig {

@Bean
@Primary
public ObjectMapper objectMapper() {
ObjectMapper objectMapper = JsonMappers.getObjectMapper();
// Register the JavaTimeModule to support Java 8 date/time types
objectMapper.registerModule(new JavaTimeModule());
objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
return objectMapper;

}

@Bean
public SqsMessagingMessageConverter sqsMessagingMessageConverter(SqsExtendedClient sqsExtendedClient, ObjectMapper objectMapper) {
ExtendedSqsMessagingMessageConverter converter = new ExtendedSqsMessagingMessageConverter(sqsExtendedClient);
converter.setObjectMapper(objectMapper);
return converter;
}
}

@Bean
SqsTemplate sqsTemplate(SqsAsyncClient sqsAsyncClient, SqsMessagingMessageConverter sqsMessagingMessageConverter, MappingJackson2MessageConverter mappingJackson2MessageConverter) {
SqsTemplate sqsTemplate = SqsTemplate.builder()
.sqsAsyncClient(sqsAsyncClient)
.messageConverter(sqsMessagingMessageConverter)
.build();
return sqsTemplate;
}
Я гарантировал, что нет конфликтов зависимости и что необходимые модули Джексона для Java 8 Date/Time Support включены:

Код: Выделить всё

        

com.fasterxml.jackson.datatype
jackson-datatype-jsr310
2.17.2


com.fasterxml.jackson.core
jackson-databind
2.17.2

< /code>
При отправке сообщения в очередь: < /p>
        sqsTemplate.send(queueName, event);

Сообщение отправляется в виде пользовательского объекта, но, поскольку мой слушатель принимает строку, оно не может должным образом понизить поля DateTime.>

Подробнее здесь: https://stackoverflow.com/questions/795 ... tion-fails

Вернуться в «JAVA»