@Test public void testOfferPoll() throws IOException, InterruptedException { final IQueue q = client.getQueue(queueForTestOfferPoll); for (int i = 0; i < 10; i++) { boolean result = q.offer("item"); if (i < maxSizeForQueue) { assertTrue(result); } else { assertFalse(result); } } assertEquals(maxSizeForQueue, q.size()); final Thread t1 = new Thread() { public void run() { try { Thread.sleep(2 * 1000); } catch (InterruptedException e) { e.printStackTrace(); } q.poll(); } }; t1.start(); boolean result = q.offer("item", 5, TimeUnit.SECONDS); assertTrue(result); for (int i = 0; i < 10; i++) { Object o = q.poll(); if (i < maxSizeForQueue) { assertNotNull(o); } else { assertNull(o); } } assertEquals(0, q.size()); final Thread t2 = new Thread() { public void run() { try { Thread.sleep(2 * 1000); } catch (InterruptedException e) { e.printStackTrace(); } q.offer("item1"); } }; t2.start(); Object o = q.poll(5, TimeUnit.SECONDS); assertEquals("item1", o); t1.join(10000); t2.join(10000); }
/* * (non-Javadoc) * * @see * org.mpilone.hazelcastmq.core.DefaultHazelcastMQConsumer.ReceiveStrategy * #receive(com.hazelcast.core.IQueue) */ @Override public byte[] receive(IQueue<byte[]> queue) { if (closed || !active) { return null; } return queue.poll(); }
/* * (non-Javadoc) * * @see * org.mpilone.hazelcastmq.core.DefaultHazelcastMQConsumer.ReceiveStrategy * #receive(com.hazelcast.core.IQueue) */ @Override public byte[] receive(IQueue<byte[]> queue) { if (closed) { return null; } try { if (!active) { receiveCondition.await(500L, TimeUnit.MILLISECONDS); } else { return queue.poll(500L, TimeUnit.MILLISECONDS); } } catch (InterruptedException ex) { // Ignore for now } return null; }
/* * (non-Javadoc) * * @see * org.mpilone.hazelcastmq.core.DefaultHazelcastMQConsumer.ReceiveStrategy * #receive(com.hazelcast.core.IQueue) */ @Override public byte[] receive(IQueue<byte[]> queue) { if (closed) { return null; } long t = Math.min(timeout, 500L); timeout -= 500L; try { if (!active) { receiveCondition.await(t, TimeUnit.MILLISECONDS); } else { return queue.poll(t, TimeUnit.MILLISECONDS); } } catch (InterruptedException ex) { // Ignore for now } return null; }
@Test public void testPoll() throws InterruptedException { final IQueue q = client.getQueue(randomString()); q.offer(1); assertEquals(1, q.poll()); }