Tracking Selectors
Select tracking id from header or message body with stable selectors.
Header Selector
Example: header:X-Correlation-Id. Selector helper APIs expose direct TrackingFieldSelector construction, Parse/TryParse, and string formatting helpers.
Body Selector
Examples: json:$.trackingId or json:$trackingId with optional MessagePayloadType for typed parsing. JSON property lookup is case-insensitive. Invalid selector expressions use the same helper error contract across SDKs.
Destination GatherByField
Optional selector using the same syntax as TrackingField; enables grouped correlation summaries and percentile trend charts.
Endpoint Base Fields
TrafficEndpointDefinition supports AutoGenerateTrackingIdWhenMissing, PollInterval, MessageHeaders, MessagePayload, MessagePayloadType, JsonSettings, JsonConvertSettings, and ContentType. PollInterval must be a positive value when explicitly configured. These apply across endpoint adapters.
Feature Usage Samples
How to use snippets for Tracking Selectors.
Switch between C#, Java, Python, TypeScript, and JavaScript to see the native SDK shape for this sample.
Licensing note: every runnable sample requires a valid runner key via WithRunnerKey("...") or config key LoadStrike:RunnerKey.
Tracking Selectors
var source = new HttpEndpointDefinition
{
Name = "http-source",
Mode = TrafficEndpointMode.Produce,
TrackingField = TrackingFieldSelector.Parse("header:X-Correlation-Id"),
Url = "https://orders.example.com/api/orders",
Method = "POST",
MessagePayload = new { orderId = 1001 }
};
var destination = new KafkaEndpointDefinition
{
Name = "kafka-destination",
Mode = TrafficEndpointMode.Consume,
TrackingField = TrackingFieldSelector.Parse("header:X-Correlation-Id"),
BootstrapServers = "localhost:9092",
Topic = "orders.completed",
ConsumerGroupId = "orders-tests"
};
var tracking = new CrossPlatformTrackingConfiguration
{
Source = source,
Destination = destination,
RunMode = TrackingRunMode.GenerateAndCorrelate,
CorrelationTimeout = TimeSpan.FromSeconds(30)
};
import com.loadstrike.runtime.CrossPlatformTrackingConfiguration;
import com.loadstrike.runtime.HttpEndpointDefinition;
import com.loadstrike.runtime.KafkaEndpointDefinition;
import com.loadstrike.runtime.LoadStrikeCorrelation.TrackingFieldSelector;
import com.loadstrike.runtime.LoadStrikeTransports;
var source = new HttpEndpointDefinition();
source.name = "http-source";
source.mode = LoadStrikeTransports.TrafficEndpointMode.Produce;
source.trackingField = TrackingFieldSelector.parse("header:X-Correlation-Id");
source.url = "https://orders.example.com/api/orders";
source.method = "POST";
source.messagePayload = java.util.Map.of("orderId", 1001);
var destination = new KafkaEndpointDefinition();
destination.name = "kafka-destination";
destination.mode = LoadStrikeTransports.TrafficEndpointMode.Consume;
destination.trackingField = TrackingFieldSelector.parse("header:X-Correlation-Id");
destination.bootstrapServers = "localhost:9092";
destination.topic = "orders.completed";
destination.consumerGroupId = "orders-tests";
var tracking = new CrossPlatformTrackingConfiguration();
tracking.source = source;
tracking.destination = destination;
tracking.runMode = LoadStrikeTransports.TrackingRunMode.GenerateAndCorrelate;
tracking.correlationTimeoutSeconds = 30d;
from loadstrike_sdk import (
CrossPlatformScenarioConfigurator,
LoadStrikeScenario,
LoadStrikeSimulation,
)
tracking = {
"RunMode": "GenerateAndCorrelate",
"CorrelationTimeoutSeconds": 30,
"Source": {
"Kind": "Http",
"Name": "http-source",
"Mode": "Produce",
"TrackingField": "header:X-Correlation-Id",
"Url": "https://orders.example.com/api/orders",
"Method": "POST",
"MessagePayload": {"orderId": 1001},
},
"Destination": {
"Kind": "Kafka",
"Name": "kafka-destination",
"Mode": "Consume",
"TrackingField": "header:X-Correlation-Id",
"BootstrapServers": "localhost:9092",
"Topic": "orders.completed",
"ConsumerGroupId": "orders-tests",
},
}
scenario = (
CrossPlatformScenarioConfigurator.Configure(
LoadStrikeScenario.empty("orders-http-to-kafka"),
tracking,
)
.with_load_simulations(LoadStrikeSimulation.iterations_for_constant(1, 1))
)
import {
CrossPlatformScenarioConfigurator,
LoadStrikeScenario,
LoadStrikeSimulation,
TrackingFieldSelector
} from "@loadstrike/loadstrike-sdk";
const tracking = {
RunMode: "GenerateAndCorrelate",
CorrelationTimeoutSeconds: 30,
Source: {
Kind: "Http",
Name: "http-source",
Mode: "Produce",
TrackingField: new TrackingFieldSelector("Header", "X-Correlation-Id"),
Url: "https://orders.example.com/api/orders",
Method: "POST",
MessagePayload: { orderId: 1001 }
},
Destination: {
Kind: "Kafka",
Name: "kafka-destination",
Mode: "Consume",
TrackingField: new TrackingFieldSelector("Header", "X-Correlation-Id"),
BootstrapServers: "localhost:9092",
Topic: "orders.completed",
ConsumerGroupId: "orders-tests"
}
};
const scenario = CrossPlatformScenarioConfigurator
.Configure(LoadStrikeScenario.empty("orders-http-to-kafka"), tracking)
.withLoadSimulations(LoadStrikeSimulation.iterationsForConstant(1, 1));
const {
CrossPlatformScenarioConfigurator,
LoadStrikeScenario,
LoadStrikeSimulation,
TrackingFieldSelector
} = require("@loadstrike/loadstrike-sdk");
const tracking = {
RunMode: "GenerateAndCorrelate",
CorrelationTimeoutSeconds: 30,
Source: {
Kind: "Http",
Name: "http-source",
Mode: "Produce",
TrackingField: new TrackingFieldSelector("Header", "X-Correlation-Id"),
Url: "https://orders.example.com/api/orders",
Method: "POST",
MessagePayload: { orderId: 1001 }
},
Destination: {
Kind: "Kafka",
Name: "kafka-destination",
Mode: "Consume",
TrackingField: new TrackingFieldSelector("Header", "X-Correlation-Id"),
BootstrapServers: "localhost:9092",
Topic: "orders.completed",
ConsumerGroupId: "orders-tests"
}
};
const scenario = CrossPlatformScenarioConfigurator
.Configure(LoadStrikeScenario.empty("orders-http-to-kafka"), tracking)
.withLoadSimulations(LoadStrikeSimulation.iterationsForConstant(1, 1));
Selector Formats
Extract the tracking value from a header using the supplied header name.
Extract the tracking value from a JSON body using a dotted JSON path expression.
Use the same JSON extraction contract in the compact dollar-prefixed form.
Construct the selector directly in code when you want explicit location and path values instead of parsing a string.