如何从CompositeData[]中获取JMSReplyTo与JMSCorrelationID
问题描述
我能打印消息的所有String属性,但不知道如何精准获取并分别显示JMSReplyTo和JMSCorrelationID。目前遍历所有键值对会输出大量多余的头信息,只需要获取这两个指定属性。现有代码如下:
for (CompositeData o : (Collection<CompositeData>) stringProps.values()) { System.out.println(o.get("key") + ": " + o.get("value")); }
解决方案
方式一:遍历筛选指定属性
在遍历过程中判断属性键是否为目标值,只输出需要的内容:
import java.util.Arrays; import java.util.Collection; import java.util.HashSet; import java.util.Set; import javax.management.openmbean.CompositeData; // 指定需要获取的目标属性集合 Set<String> targetPropertyNames = new HashSet<>(Arrays.asList("JMSReplyTo", "JMSCorrelationID")); for (CompositeData propData : (Collection<CompositeData>) stringProps.values()) { String propKey = (String) propData.get("key"); if (targetPropertyNames.contains(propKey)) { System.out.println(propKey + ": " + propData.get("value")); } }
方式二:直接按键获取(更高效)
如果stringProps是以属性名称为键的Map<String, CompositeData>,可以直接通过键精准取值,无需遍历全部元素:
import javax.management.openmbean.CompositeData; import java.util.Map; // 假设stringProps为Map<String, CompositeData>类型 Map<String, CompositeData> propsMap = (Map<String, CompositeData>) stringProps; // 获取JMSReplyTo CompositeData replyToData = propsMap.get("JMSReplyTo"); if (replyToData != null) { System.out.println("JMSReplyTo: " + replyToData.get("value")); } // 获取JMSCorrelationID CompositeData correlationIdData = propsMap.get("JMSCorrelationID"); if (correlationIdData != null) { System.out.println("JMSCorrelationID: " + correlationIdData.get("value")); }
内容的提问来源于stack exchange,提问作者VANISH
相关产品推荐
相关产品推荐

