SimpleMessageConverter将ConcurrentHashMap转换为HashMap

问题描述 投票:0回答:1

我使用concurrenthashmap payload创建了一个集成消息,如下所示

return MessageBuilder.createMessage(emvMessage.getResponse(), headers);

其中emvMessage.getResponse()方法返回

public ConcurrentHashMap<String, Object> getResponse() {
 ...
}

到现在为止还挺好。但是当我尝试从api接收消息时,对象变成了HashMap

Object response = jmsTemplate.receiveAndConvert(REQUEST_QUEUE_NAME);

这是因为SimpleMessageConverter类在以下方法中将所有MapMessages转换为HashMap。

 protected Map<String, Object> extractMapFromMessage(MapMessage message) 
throws JMSException {
    Map<String, Object> map = new HashMap();
    Enumeration en = message.getMapNames();

    while(en.hasMoreElements()) {
        String key = (String)en.nextElement();
        map.put(key, message.getObject(key));
    }

    return map;
}

是否可以添加新功能或将此情况视为错误?或者我应该手动将此hashmap转换为concurrenthashmap吗?

spring spring-jms
1个回答
0
投票

只需将简单转换器子类化并覆盖extractMapFromMessage()

© www.soinside.com 2019 - 2024. All rights reserved.