Spring Boot JMS MappingJackson2MessageConverter не может найти поле `_type`, даже если оно существует - PullRequest
0 голосов
/ 20 мая 2018

Я использую Spring boot для получения сообщения JMS и cURL для его отправки.

Вот конфигурация Spring:

@Bean
public MessageConverter jsonJmsMessageConverter() {
    MappingJackson2MessageConverter converter = new MappingJackson2MessageConverter();
    converter.setTargetType(MessageType.TEXT);
    converter.setTypeIdPropertyName("_type");
    return converter;
}

Когда я пытаюсь отправить сообщение, я получаю:

org.springframework.jms.support.converter.MessageConversionException: Could not find type id property [_type] on message [ID:b5151b422e8a-41371-1526292561432-6:3:1:1:14] from destination [queue://ssg]

Моя команда cURL:

curl -u 'un:pw' -H '_type: com.me.SSMessage' -d 'body={"_type": "com.me.SSMessage", "url": "https://www.google.com"}' "http://localhost:8161/api/message/ssg?type=queue&clientId=consumerA"

_type, оба в качестве заголовка (я недумаю, что это правильно) и как поле в JSON.Почему я получаю эту ошибку из приложения Spring?

1 Ответ

0 голосов
/ 21 мая 2018

Это скорее вопрос Activemq / REST, чем Spring:

converter.setTypeIdPropertyName("_type");

Устанавливает свойство сообщения JMS, оно не является полем в сообщении.Здесь есть материал о заголовках сообщений: https://docs.oracle.com/javaee/7/api/javax/jms/Message.html

Хитрость в том, как сделать это с помощью интерфейса ActiveMq REST (и, следовательно, CURL).Ответ заключается в добавлении его в качестве параметра GET в запросе:

curl -u 'un:pw' -H '_type: com.me.SSMessage' \
-d 'body={"url": "https://www.google.com"}' \ 
"http://localhost:8161/api/message/ssg? \ 
type=queue&clientId=consumerA&_type=com.me.SSMessage"
...