package com.zendesk.maxwell.producer;
import com.zendesk.maxwell.replication.BinlogPosition;
import com.zendesk.maxwell.MaxwellContext;
import com.zendesk.maxwell.row.RowMap;
import java.sql.SQLException;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.TimeUnit;
public class BufferedProducer extends AbstractProducer {
private final LinkedBlockingQueue<RowMap> queue;
public BufferedProducer(MaxwellContext context, int maxSize) {
super(context);
this.queue = new LinkedBlockingQueue<>(maxSize);
}
@Override
public void push(RowMap r) throws Exception {
try {
this.queue.put(r);
} catch ( InterruptedException e ) {}
}
public RowMap poll(long timeout, TimeUnit unit) throws InterruptedException {
RowMap r = this.queue.poll(timeout, unit);
if (r != null) {
this.context.setPosition(r);
}
return r;
}
}