Having trouble with backpressure. Using publish subject to get Sensor event on emitting, and need to save data to database on subscribe to subject in transaction.
I have been trying to use .window(100) operator so i can bulk insert whenever i get 100 sensor event's in a row but i can only get one item at .subscribe()
Don't want to drop events by using buffer operator. What is the right way to handle this?
@Override
public void onSensorChanged(SensorEvent sevent) {
Sensor sensor = sevent.sensor;
switch (sensor.getType()) {
case Sensor.TYPE_ACCELEROMETER:
sensorEventPublishSubject.onNext(sevent);
break;
}
}
sensorEventPublishSubject
.map(event ->
new AccModel(
event.values[0],
event.values[1],
event.values[2],
event.accuracy
)
)
.window(100)
.subscribe(
new Action1<Observable<AccModel>>() {
@Override
public void call(Observable<AccModel> accModelObservable) {
//insert in db
}
}
);