From d6989f1e54104d09b8af6d22cf46ea4f6fc5f4dc Mon Sep 17 00:00:00 2001 From: Trygve Laugstøl Date: Wed, 10 Sep 2014 00:12:30 +0200 Subject: o Initial import of postgresql LISTEN/NOTIFY code. --- .../java/io/trygvis/jz14/demo/ListenerMain.java | 55 ++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 src/main/java/io/trygvis/jz14/demo/ListenerMain.java (limited to 'src/main/java/io/trygvis/jz14/demo/ListenerMain.java') diff --git a/src/main/java/io/trygvis/jz14/demo/ListenerMain.java b/src/main/java/io/trygvis/jz14/demo/ListenerMain.java new file mode 100644 index 0000000..82f7c27 --- /dev/null +++ b/src/main/java/io/trygvis/jz14/demo/ListenerMain.java @@ -0,0 +1,55 @@ +package io.trygvis.jz14.demo; + +import io.trygvis.jz14.db.DbListener; +import io.trygvis.jz14.db.DbListener.DbListenerConfig; +import io.trygvis.jz14.db.NativeConnectionSupplier; +import io.trygvis.jz14.db.NgConnectionSupplier; +import org.slf4j.Logger; + +import static java.util.concurrent.TimeUnit.SECONDS; +import static org.slf4j.LoggerFactory.getLogger; + +public class ListenerMain implements DbListener.NewItemCallback { + Logger log = getLogger(getClass()); + + public void main(boolean useNative) throws Exception { + DbListener listener; + if (useNative) { + Db db = new Db("listener"); + listener = DbListener.nativeDbListener( + new DbListenerConfigForListenerMain("mail_raw"), + this, new NativeConnectionSupplier(db.dataSource()) + ); + } else { + Db db = new Db("listener", true); + listener = DbListener.ngDbListener( + new DbListenerConfigForListenerMain("mail_raw"), + this, new NgConnectionSupplier(db.dataSource()) + ); + } + + Runtime.getRuntime().addShutdownHook(new Thread() { + @Override + public void run() { + listener.close(); + } + }); + + while (true) { + Thread.sleep(Long.MAX_VALUE); + } + } + + @Override + public void newItem(boolean wasNotified, Iterable parameters) throws Exception { + log.info("ListenerMain.newItem: wasNotified={}, parameters={}", wasNotified, parameters); + } + + private class DbListenerConfigForListenerMain extends DbListenerConfig { + public DbListenerConfigForListenerMain(String name) { + super(name); + listenerFailureSleepInterval = ms(5, SECONDS); + listenerConnectionLiveCheckInterval = ms(5, SECONDS); + } + } +} -- cgit v1.2.3