Example usage for org.springframework.amqp.core DirectExchange DirectExchange

List of usage examples for org.springframework.amqp.core DirectExchange DirectExchange

Introduction

In this page you can find the example usage for org.springframework.amqp.core DirectExchange DirectExchange.

Prototype

public DirectExchange(String name, boolean durable, boolean autoDelete) 

Source Link

Usage

From source file:com.xoom.rabbit.test.Main.java

public static void main(String[] args) throws InterruptedException {
    if (args.length != 9) {
        System.out.println(//www  .  j a v  a2 s.c om
                "usage: java -jar target/rabbit-tester-0.1-SNAPSHOT-standalone.jar [consumer_threads] [number_of_messages] [amqp_host] [amqp_port] [produce] [consume] [message size in bytes] [username] [password]");
        return;
    }
    final long startTime = System.currentTimeMillis();
    int consumerThreads = Integer.parseInt(args[0]);
    final int messages = Integer.parseInt(args[1]);
    String host = args[2];
    int port = Integer.parseInt(args[3]);
    boolean produce = Boolean.parseBoolean(args[4]);
    boolean consume = Boolean.parseBoolean(args[5]);
    final int messageSize = Integer.parseInt(args[6]);
    String username = args[7];
    String password = args[8];

    if (produce) {
        System.out.println("Sending " + messages + " messages to " + host + ":" + port);
    }
    if (consume) {
        System.out.println("Consuming " + messages + " messages from " + host + ":" + port);
    }
    if (!produce && !consume) {
        System.out.println("Not producing or consuming any messages.");
    }

    CachingConnectionFactory connectionFactory = new CachingConnectionFactory(host, port);
    connectionFactory.setUsername(username);
    connectionFactory.setPassword(password);
    connectionFactory.setChannelCacheSize(consumerThreads + 1);

    RabbitAdmin amqpAdmin = new RabbitAdmin(connectionFactory);

    DirectExchange exchange = new DirectExchange(EXCHANGE_NAME, true, false);
    Queue queue = new Queue(QUEUE_NAME);
    amqpAdmin.declareExchange(exchange);
    amqpAdmin.declareQueue(queue);
    amqpAdmin.declareBinding(BindingBuilder.bind(queue).to(exchange).with(ROUTING_KEY));

    final AmqpTemplate amqpTemplate = new RabbitTemplate(connectionFactory);

    final CountDownLatch producerLatch = new CountDownLatch(messages);
    final CountDownLatch consumerLatch = new CountDownLatch(messages);

    SimpleMessageListenerContainer listenerContainer = null;

    if (consume) {
        listenerContainer = new SimpleMessageListenerContainer();
        listenerContainer.setConnectionFactory(connectionFactory);
        listenerContainer.setQueueNames(QUEUE_NAME);
        listenerContainer.setConcurrentConsumers(consumerThreads);
        listenerContainer.setMessageListener(new MessageListener() {
            @Override
            public void onMessage(Message message) {
                if (consumerLatch.getCount() == 1) {
                    System.out.println("Finished consuming " + messages + " messages in "
                            + (System.currentTimeMillis() - startTime) + "ms");
                }
                consumerLatch.countDown();
            }
        });
        listenerContainer.start();
    }

    if (produce) {
        while (producerLatch.getCount() > 0) {
            try {
                byte[] message = new byte[messageSize];
                RND.nextBytes(message);
                amqpTemplate.send(EXCHANGE_NAME, ROUTING_KEY, new Message(message, new MessageProperties()));
                producerLatch.countDown();
            } catch (Exception e) {
                System.out.println("Failed to send message " + (messages - producerLatch.getCount())
                        + " will retry forever.");
            }
        }
    }

    if (consume) {
        consumerLatch.await();
        listenerContainer.shutdown();
    }

    connectionFactory.destroy();
}

From source file:com.nkapps.billing.configs.RabbitMQConfig.java

@Bean
public DirectExchange pgExchange() {
    return new DirectExchange(BILLING_PG_EXCHANGE, true, false);
}

From source file:com.nkapps.billing.configs.RabbitMQConfig.java

@Bean
public DirectExchange pgErrorExchange() {
    return new DirectExchange(pgErrorExchangeName(), true, false);
}

From source file:amqp.spring.camel.component.SpringAMQPEndpoint.java

org.springframework.amqp.core.Exchange createAMQPExchange() {
    if ("direct".equals(this.exchangeType)) {
        return new DirectExchange(this.exchangeName, this.durable, this.autodelete);
    } else if ("fanout".equals(this.exchangeType)) {
        return new FanoutExchange(this.exchangeName, this.durable, this.autodelete);
    } else if ("headers".equals(this.exchangeType)) {
        return new HeadersExchange(this.exchangeName, this.durable, this.autodelete);
    } else if ("topic".equals(this.exchangeType)) {
        return new TopicExchange(this.exchangeName, this.durable, this.autodelete);
        //We have a routing key but no explicit exchange type, assume topic exchange
    } else if (this.routingKey != null) {
        return new TopicExchange(this.exchangeName, this.durable, this.autodelete);
    } else {// ww  w  . ja va2s  . c  o m
        return new DirectExchange(this.exchangeName, this.durable, this.autodelete);
    }
}

From source file:org.resthub.rpc.AMQPHessianProxyFactory.java

/**
 * Create a queue and an exchange for requests
 * //from www.j  ava2s .  c o m
 * @param connectionFactory
 * @param queueName    the name of the queue
 * @param exchangeName    the name of the exchange
 */
private void createRequestQueue(AmqpAdmin admin, String queueName, String exchangeName) {
    Queue requestQueue = new Queue(queueName, false, false, false);
    admin.declareQueue(requestQueue);
    DirectExchange requestExchange = new DirectExchange(exchangeName, false, false);
    admin.declareExchange(requestExchange);
    Binding requestBinding = BindingBuilder.bind(requestQueue).to(requestExchange).with(queueName);
    admin.declareBinding(requestBinding);
}

From source file:vn.topmedia.monitor.MonitorAppender.java

/**
 * Maybe declare the exchange./*from   w  w  w  .  j  av  a2 s.  c  om*/
 */
protected void maybeDeclareExchange() {
    RabbitAdmin admin = new RabbitAdmin(connectionFactory);
    if (declareExchange) {
        Exchange x;
        if ("topic".equals(exchangeType)) {
            x = new TopicExchange(exchangeName, durable, autoDelete);
        } else if ("direct".equals(exchangeType)) {
            x = new DirectExchange(exchangeName, durable, autoDelete);
        } else if ("fanout".equals(exchangeType)) {
            x = new FanoutExchange(exchangeName, durable, autoDelete);
        } else if ("headers".equals(exchangeType)) {
            x = new HeadersExchange(exchangeType, durable, autoDelete);
        } else {
            x = new TopicExchange(exchangeName, durable, autoDelete);
        }
        admin.declareExchange(x);
    }
}

From source file:org.springframework.amqp.rabbit.core.RabbitAdminTests.java

@Test
public void testTemporaryLogs() throws Exception {
    SingleConnectionFactory connectionFactory = new SingleConnectionFactory();
    connectionFactory.setHost("localhost");
    RabbitAdmin rabbitAdmin = new RabbitAdmin(connectionFactory);
    try {//from  w  ww. j  a  v a  2s.c om
        ApplicationContext ctx = mock(ApplicationContext.class);
        Map<String, Queue> queues = new HashMap<String, Queue>();
        queues.put("nonDurQ", new Queue("testq.nonDur", false, false, false));
        queues.put("adQ", new Queue("testq.ad", true, false, true));
        queues.put("exclQ", new Queue("testq.excl", true, true, false));
        queues.put("allQ", new Queue("testq.all", false, true, true));
        when(ctx.getBeansOfType(Queue.class)).thenReturn(queues);
        Map<String, Exchange> exchanges = new HashMap<String, Exchange>();
        exchanges.put("nonDurEx", new DirectExchange("testex.nonDur", false, false));
        exchanges.put("adEx", new DirectExchange("testex.ad", true, true));
        exchanges.put("allEx", new DirectExchange("testex.all", false, true));
        when(ctx.getBeansOfType(Exchange.class)).thenReturn(exchanges);
        rabbitAdmin.setApplicationContext(ctx);
        rabbitAdmin.afterPropertiesSet();
        Log logger = spy(TestUtils.getPropertyValue(rabbitAdmin, "logger", Log.class));
        doReturn(true).when(logger).isInfoEnabled();
        doAnswer(new DoesNothing()).when(logger).info(anyString());
        new DirectFieldAccessor(rabbitAdmin).setPropertyValue("logger", logger);
        connectionFactory.createConnection().close(); // force declarations
        ArgumentCaptor<String> log = ArgumentCaptor.forClass(String.class);
        verify(logger, times(7)).info(log.capture());
        List<String> logs = log.getAllValues();
        Collections.sort(logs);
        assertThat(logs.get(0), Matchers.containsString("(testex.ad) durable:true, auto-delete:true"));
        assertThat(logs.get(1), Matchers.containsString("(testex.all) durable:false, auto-delete:true"));
        assertThat(logs.get(2), Matchers.containsString("(testex.nonDur) durable:false, auto-delete:false"));
        assertThat(logs.get(3),
                Matchers.containsString("(testq.ad) durable:true, auto-delete:true, exclusive:false"));
        assertThat(logs.get(4),
                Matchers.containsString("(testq.all) durable:false, auto-delete:true, exclusive:true"));
        assertThat(logs.get(5),
                Matchers.containsString("(testq.excl) durable:true, auto-delete:false, exclusive:true"));
        assertThat(logs.get(6),
                Matchers.containsString("(testq.nonDur) durable:false, auto-delete:false, exclusive:false"));
    } finally {
        cleanQueuesAndExchanges(rabbitAdmin);
        connectionFactory.destroy();
    }
}