List of usage examples for com.rabbitmq.client Channel basicConsume
String basicConsume(String queue, boolean autoAck, String consumerTag, Consumer callback) throws IOException;
From source file:reactor.rabbitmq.RabbitFluxTests.java
License:Open Source License
@Test public void publishConfirms() throws Exception { int nbMessages = 10; CountDownLatch consumedLatch = new CountDownLatch(nbMessages); CountDownLatch confirmedLatch = new CountDownLatch(nbMessages); AtomicInteger counter = new AtomicInteger(); Channel channel = connection.createChannel(); channel.basicConsume(queue, true, (consumerTag, delivery) -> { counter.incrementAndGet();//w w w .j a va2 s . c o m consumedLatch.countDown(); }, consumerTag -> { }); Flux<OutboundMessage> msgFlux = Flux.range(0, nbMessages) .map(i -> new OutboundMessage("", queue, "".getBytes())); sender = createSender(); sender.sendWithPublishConfirms(msgFlux).subscribe(outboundMessageResult -> { if (outboundMessageResult.isAck() && outboundMessageResult.getOutboundMessage() != null) { confirmedLatch.countDown(); } }); assertTrue(consumedLatch.await(1, TimeUnit.SECONDS)); assertTrue(confirmedLatch.await(1, TimeUnit.SECONDS)); assertEquals(nbMessages, counter.get()); }
From source file:reactor.rabbitmq.RabbitFluxTests.java
License:Open Source License
@Test public void publishConfirmsBackpressure() throws Exception { int nbMessages = 10; int subscriberRequest = 3; CountDownLatch consumedLatch = new CountDownLatch(subscriberRequest); CountDownLatch confirmedLatch = new CountDownLatch(subscriberRequest); AtomicInteger counter = new AtomicInteger(); Channel channel = connection.createChannel(); channel.basicConsume(queue, true, (consumerTag, delivery) -> { counter.incrementAndGet();// w w w . ja va 2s . c o m consumedLatch.countDown(); }, consumerTag -> { }); Flux<OutboundMessage> msgFlux = Flux.range(0, nbMessages) .map(i -> new OutboundMessage("", queue, "".getBytes())); sender = createSender(); sender.sendWithPublishConfirms(msgFlux).subscribe(new BaseSubscriber<OutboundMessageResult>() { @Override protected void hookOnSubscribe(Subscription subscription) { subscription.request(subscriberRequest); } @Override protected void hookOnNext(OutboundMessageResult outboundMessageResult) { if (outboundMessageResult.getOutboundMessage() != null) { confirmedLatch.countDown(); } } }); assertTrue(consumedLatch.await(1, TimeUnit.SECONDS)); assertTrue(confirmedLatch.await(1, TimeUnit.SECONDS)); assertEquals(subscriberRequest, counter.get()); }
From source file:reactor.rabbitmq.RabbitFluxTests.java
License:Open Source License
private Flux<Delivery> consume(final String queue, int nbMessages, Duration timeout) throws Exception { Channel channel = connection.createChannel(); Flux<Delivery> consumeFlux = Flux .create(emitter -> Mono.just(nbMessages).map(AtomicInteger::new).subscribe(countdown -> { DeliverCallback deliverCallback = (consumerTag, message) -> { emitter.next(message); if (countdown.decrementAndGet() <= 0) { emitter.complete(); }//from w w w . j av a 2s . c o m }; CancelCallback cancelCallback = consumerTag -> { }; try { channel.basicConsume(queue, true, deliverCallback, cancelCallback); } catch (IOException e) { e.printStackTrace(); } })); return consumeFlux.timeout(timeout); }