Data Collector
Data Collector example using Strategy and Pipeline Pattern
Let's design a flexible and extensible solution to extract various data points from different sources or formats.
Create DataCollector interface along with a method collect which takes input as well as output object, which is to be updated.
DataCollector.java
public interface DataCollector {
void collect(InputData inputData, OutputData outputData);
}Create several implementation (for eg. header collector, token collector, request collector etc) of the interface.
HeaderDataCollector.java- Collects headers and set in the output
@Component
public class HeaderDataCollector implements DataCollector {
@Override
public void collect(InputData inputData, OutputData outputData) {
var headers = inputData.getHeaders();
outputData.setHeaderHost(headers.get("x-host"));
outputData.setHeaderTraceId(headers.get("x-trace-id"));
outputData.setHeaderSpanId(headers.get("x-span-id"));
}
}TokenDataCollector.java- Collects token metadata and set in the output
HttpRequestDataCollector.java- Collects http request related parameters
Now, we will create a pipeline class which goes through all the above implementation to extract and set data in the output.
DataCollectorPipeline.java
Pipeline can be called in the service class like below.
DataService.java
Last updated