Publishing in callback mode can be used in special cases, but is not recommended.
PublisherOptions.Builder builder = new PublisherOptions.Builder(); builder.setAccessMode(AccessMode.CALLBACK); builder.setPulseInterval(pulseInterval); PublisherOptions opts = builder.create(); Publisher pub = project.createPublisher(opts); pub.setCallback(EnumSet.allOf(PublisherEvent.Type.class), new PublisherHandler(project)); pub.connect();
PublisherHandler implements Callback<PublisherEvent>. It also implements two methods: getName() and processEvent(PublisherEvent event).
The script for implementing processEvent should look like this:
public void processEvent(PublisherEvent event) { switch (event.getType()) { case CONNECTED: mwriter = event.getPublisher().getMessageWriter(mstr); rowwriter = mwriter.getRelativeRowWriter(); break; case READY: mwriter.startTransaction(0); for (int j = 0; j < 100; ++j) { mrowwriter.startRow(); mrowwriter.setOperation(Operation.INSERT); for (int i = 0; i < mschema.getColumnCount(); ++i) { switch (mtypes[i]) { case INTEGER: mrowwriter.setInteger(int_value++);break; case DOUBLE: mrowwriter.setDouble(double_value+=1.0); break; } }//columns mrowwriter.endRow(); }//for event.getPublisher().publish(mwriter); case ERROR: break; case DISCONNECTD:break; }//switch }//processEvent