@Override protected void createQueue() throws BaleenException { consumer = mqResource.createBlockingConsumer(topic); }
@Override protected void createQueue() throws BaleenException { supplier = mqResource.createBlockingSupplier(topic); }
/** * Create a (non-blocking) supplier for the given topic * * @param topic * @return the supplier */ public Supplier<String> createSupplier(final String topic) { final BlockingDeque<String> queue = getQueue(topic); return queue::pollFirst; }
@Test public void testQueueCanSendAndRecieveOnMultipleQueuesBlocking() { Supplier<String> supplier1 = resource.createBlockingSupplier(TEST_QUEUE); Consumer<String> consumer1 = resource.createBlockingConsumer(TEST_QUEUE); Supplier<String> supplier2 = resource.createBlockingSupplier(OTHER_TEST_QUEUE); Consumer<String> consumer2 = resource.createBlockingConsumer(OTHER_TEST_QUEUE); consumer1.accept(MESSAGE); consumer2.accept(OTHER_MESSAGE); assertEquals(OTHER_MESSAGE, supplier2.get()); assertEquals(MESSAGE, supplier1.get()); }
@Test public void testQueueCanSendAndRecieveOnMultipleQueues() { Supplier<String> supplier1 = resource.createSupplier(TEST_QUEUE); Consumer<String> consumer1 = resource.createConsumer(TEST_QUEUE); Supplier<String> supplier2 = resource.createSupplier(OTHER_TEST_QUEUE); Consumer<String> consumer2 = resource.createConsumer(OTHER_TEST_QUEUE); consumer1.accept(MESSAGE); consumer2.accept(OTHER_MESSAGE); assertEquals(OTHER_MESSAGE, supplier2.get()); assertEquals(MESSAGE, supplier1.get()); }
@Before public void setup() { resource = new SharedMemoryQueueResource(); resource.setQueueCapacity(10); }
/** * Get the queue for the given topic * * @param topic * @return the queue */ public BlockingDeque<String> getQueue(final String topic) { return getOrCreateQueue(topic); }
@After public void tearDown() { resource.doDestroy(); }
@Test public void testQueueCanSendAndRecieveBlocking() { Supplier<String> supplier = resource.createBlockingSupplier(TEST_QUEUE); Consumer<String> consumer = resource.createBlockingConsumer(TEST_QUEUE); consumer.accept(MESSAGE); assertEquals(MESSAGE, supplier.get()); }
@Test public void testQueueCanSendAndRecieve() { Supplier<String> supplier = resource.createSupplier(TEST_QUEUE); Consumer<String> consumer = resource.createConsumer(TEST_QUEUE); consumer.accept(MESSAGE); assertEquals(MESSAGE, supplier.get()); }
/** * Get the queue for the given topic * * @param topic * @return the queue */ public BlockingDeque<String> getQueue(final String topic) { return getOrCreateQueue(topic); }
/** * Create a (non-blocking) supplier for the given topic * * @param topic * @return the supplier */ public Supplier<String> createSupplier(final String topic) { final BlockingDeque<String> queue = getQueue(topic); return queue::pollFirst; }
/** * Create a (non-blocking) consumer for the given topic. * * <p>Advise setting a high capacity to avoid errors * * @param topic * @return the consumer */ public Consumer<String> createConsumer(final String topic) { final BlockingDeque<String> queue = getQueue(topic); return queue::addLast; }
/** * Create a (non-blocking) consumer for the given topic. * * <p>Advise setting a high capacity to avoid errors * * @param topic * @return the consumer */ public Consumer<String> createConsumer(final String topic) { final BlockingDeque<String> queue = getQueue(topic); return queue::addLast; }
@Override protected int getQueueLength() { return mqResource.getQueue(topic).size(); } }
/** * Create a blocking consumer for the given topic * * @param topic * @return the consumer */ public Consumer<String> createBlockingConsumer(final String topic) { final BlockingDeque<String> queue = getQueue(topic); return t -> { boolean accepted = false; while (!accepted) { try { accepted = queue.offerLast(t, 1, TimeUnit.MINUTES); } catch (final InterruptedException e) { Thread.currentThread().interrupt(); } } }; }
/** * Create a blocking consumer for the given topic * * @param topic * @return the consumer */ public Consumer<String> createBlockingConsumer(final String topic) { final BlockingDeque<String> queue = getQueue(topic); return t -> { boolean accepted = false; while (!accepted) { try { accepted = queue.offerLast(t, 1, TimeUnit.MINUTES); } catch (final InterruptedException e) { Thread.currentThread().interrupt(); } } }; }
/** * Create a (blocking) supplier for the given topic * * @param topic * @return the supplier */ public Supplier<String> createBlockingSupplier(final String topic) { final BlockingDeque<String> queue = getQueue(topic); return () -> { while (true) { try { final String s = queue.pollFirst(1, TimeUnit.MINUTES); if (s != null) { return s; } } catch (final InterruptedException e) { Thread.currentThread().interrupt(); } } }; }
/** * Create a (blocking) supplier for the given topic * * @param topic * @return the supplier */ public Supplier<String> createBlockingSupplier(final String topic) { final BlockingDeque<String> queue = getQueue(topic); return () -> { while (true) { try { final String s = queue.pollFirst(1, TimeUnit.MINUTES); if (s != null) { return s; } } catch (final InterruptedException e) { Thread.currentThread().interrupt(); } } }; }