我使用Spring启动来接收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应用程序中得到错误?
答案 0 :(得分:0)
这比Spring更像是一个Activemq / REST问题:
converter.setTypeIdPropertyName("_type");
这设置了JMS Message属性,它不是消息中的字段。有关邮件标题的内容如下: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"