in ons-core/ons-trace-core/src/main/java/org/apache/rocketmq/ons/open/trace/core/dispatch/impl/AsyncArrayDispatcher.java [243:265]
public void sendTraceData(List<OnsTraceContext> contextList) {
Map<String, List<OnsTraceTransferBean>> transBeanMap = new HashMap<String, List<OnsTraceTransferBean>>(16);
String currentRegionId = null;
for (OnsTraceContext context : contextList) {
currentRegionId = context.getRegionId();
if (currentRegionId == null || context.getTraceBeans().isEmpty()) {
continue;
}
String topic = context.getTraceBeans().get(0).getTopic();
String key = topic + OnsTraceConstants.CONTENT_SPLITOR + currentRegionId;
List<OnsTraceTransferBean> transBeanList = transBeanMap.get(key);
if (transBeanList == null) {
transBeanList = new ArrayList<OnsTraceTransferBean>();
transBeanMap.put(key, transBeanList);
}
OnsTraceTransferBean traceData = OnsTraceDataEncoder.encoderFromContextBean(context);
transBeanList.add(traceData);
}
for (Map.Entry<String, List<OnsTraceTransferBean>> entry : transBeanMap.entrySet()) {
String[] key = entry.getKey().split(String.valueOf(OnsTraceConstants.CONTENT_SPLITOR));
flushData(entry.getValue(), key[0], key[1]);
}
}