spring - SimpleMessageConverter 将 ConcurrentHashMap 转换为 HashMap
问题描述
我创建了一条带有 concurrenthashmap 有效负载的集成消息,如下所示
return MessageBuilder.createMessage(emvMessage.getResponse(), headers);
emvMessage.getResponse() 方法返回的位置
public ConcurrentHashMap<String, Object> getResponse() {
...
}
到目前为止,一切都很好。但是当我尝试从 api 接收消息时,该对象正在变成一个 HashMap
Object response = jmsTemplate.receiveAndConvert(REQUEST_QUEUE_NAME);
这是因为 SimpleMessageConverter 类在下面的方法中将所有 MapMessage 转换为 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;
}
是否可以添加新功能或者这种情况可以被视为错误?还是我应该手动将此哈希图转换为并发哈希图?
解决方案
只需将简单转换器子类化并覆盖extractMapFromMessage()
。
推荐阅读
- service-worker - 我可以在我的服务人员中因一个错误而终止我的页面吗?
- angular - 通过另一个服务调用 HTTP API
- android - Firebase RecyclerView UI 未显示
- asp.net - ASP.NET DataAnnotations 是否阻止将密码作为纯文本保存在内存中?
- intellij-idea - 使用节点驱动程序时,流程中的公证会因握手失败而挂起
- javascript - how do you pass the value to anchor tag on every click using jquery?
- forms - 角度 5,如何获取选定对象的 id
- google-analytics - 谷歌分析没有跟踪事件上下文中的自定义维度
- javascript - 如何在特定事件后渲染/创建 Vue 组件(例如 @click @change)
- kubernetes - Kubernetes 持久卷数据在多个 pod 删除后损坏