package io.trygvis.test; import io.trygvis.queue.JdbcQueueService; import io.trygvis.queue.Queue; import io.trygvis.queue.QueueService; import io.trygvis.queue.Task; import javax.sql.DataSource; import java.sql.Connection; import java.util.Date; import java.util.List; import static io.trygvis.queue.JdbcQueueService.createQueueService; import static io.trygvis.queue.Task.newTask; import static io.trygvis.test.DbUtil.createDataSource; import static java.util.Arrays.asList; import static java.util.Collections.singletonList; public class PlainJavaExample { private static String inputName = "my-input"; private static String outputName = "my-output"; private static int interval = 10; public static class Consumer { public static void main(String[] args) throws Exception { System.out.println("Starting consumer"); DataSource ds = createDataSource(); Connection c = ds.getConnection(); JdbcQueueService queueService = createQueueService(c); final Queue input = queueService.getQueue(c, inputName, interval, true); final Queue output = queueService.getQueue(c, outputName, interval, true); queueService.consume(c, input, new QueueService.TaskEffect() { public List consume(Task task) throws Exception { System.out.println("PlainJavaExample$Consumer.consume"); Long a = Long.valueOf(task.arguments.get(0)); Long b = Long.valueOf(task.arguments.get(1)); System.out.println("a + b = " + a + " + " + b + " = " + (a + b)); return singletonList(newTask(output.name, new Date(), Long.toString(a + b))); } }); c.commit(); } } public static class Producer { public static void main(String[] args) throws Exception { System.out.println("Starting producer"); DataSource ds = createDataSource(); Connection c = ds.getConnection(); JdbcQueueService queueService = createQueueService(c); Queue queue = queueService.getQueue(c, inputName, interval, true); queueService.schedule(c, queue, new Date(), asList("10", "20")); c.commit(); } } }