perf: avoid global lock in jt808 mileage processor
This commit is contained in:
@@ -21,7 +21,7 @@ public final class Jt808MileageStreamProcessor {
|
|||||||
this.zoneId = zoneId;
|
this.zoneId = zoneId;
|
||||||
}
|
}
|
||||||
|
|
||||||
public synchronized void process(VehicleEnvelope envelope) {
|
public void process(VehicleEnvelope envelope) {
|
||||||
extractor.extract(envelope).ifPresent(this::processPoint);
|
extractor.extract(envelope).ifPresent(this::processPoint);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import com.lingniu.ingest.vehiclestat.VehicleDailyStatResult;
|
|||||||
import com.lingniu.ingest.vehiclestat.VehicleStatRepository;
|
import com.lingniu.ingest.vehiclestat.VehicleStatRepository;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
import java.lang.reflect.Modifier;
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.time.ZoneId;
|
import java.time.ZoneId;
|
||||||
@@ -63,6 +64,15 @@ class Jt808MileageStreamProcessorTest {
|
|||||||
assertThat(repository.results).isEmpty();
|
assertThat(repository.results).isEmpty();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void processDoesNotSerializeAllVehicleMileageUpdatesBehindOneMonitor() throws NoSuchMethodException {
|
||||||
|
int modifiers = Jt808MileageStreamProcessor.class
|
||||||
|
.getDeclaredMethod("process", VehicleEnvelope.class)
|
||||||
|
.getModifiers();
|
||||||
|
|
||||||
|
assertThat(Modifier.isSynchronized(modifiers)).isFalse();
|
||||||
|
}
|
||||||
|
|
||||||
private static Jt808MileageStreamProcessor processor(VehicleStatRepository repository) {
|
private static Jt808MileageStreamProcessor processor(VehicleStatRepository repository) {
|
||||||
return new Jt808MileageStreamProcessor(
|
return new Jt808MileageStreamProcessor(
|
||||||
new Jt808LocationPointExtractor(),
|
new Jt808LocationPointExtractor(),
|
||||||
|
|||||||
Reference in New Issue
Block a user