List of usage examples for org.springframework.amqp.core DirectExchange DirectExchange
public DirectExchange(String name, boolean durable, boolean autoDelete, Map<String, Object> arguments)
From source file:com.jbrisbin.groovy.mqdsl.RabbitMQBuilder.java
@Override protected Object createNode(Object o, final Map params) { if (log.isDebugEnabled()) { log.debug(String.format("createNode(Object o, Map params): %s, %s", o, params)); }//from ww w . j a v a 2 s . c o m String node = o.toString(); if (ON.equals(node)) { // Event handlers for (Map.Entry<String, Closure> entry : ((Map<String, Closure>) params).entrySet()) { String eventName = entry.getKey(); List<Closure> handlers; if (eventHandlers.containsKey(eventName)) { handlers = eventHandlers.get(eventName); } else { handlers = new ArrayList<Closure>(); eventHandlers.put(eventName, handlers); } if (entry.getValue() instanceof List) { for (Closure cl : (List<Closure>) entry.getValue()) { handlers.add(cl); } } else if (entry.getValue() instanceof Closure) { Closure cl = entry.getValue(); cl.setProperty(NAME, eventName); handlers.add(cl); } } return null; } else if (EXCHANGE.equals(node)) { boolean durable = params.containsKey(DURABLE) ? (Boolean) params.get(DURABLE) : false; boolean autoDelete = params.containsKey(AUTO_DELETE) ? (Boolean) params.get(AUTO_DELETE) : false; Map arguments = params.containsKey(ARGUMENTS) ? (Map) params.get(ARGUMENTS) : null; currentRoutingKey = null; Exchange exchange = null; String name = null; if (params.containsKey(NAME)) { name = params.get(NAME).toString(); } if (params.containsKey(TYPE)) { String type = params.containsKey(TYPE) ? params.get(TYPE).toString() : DIRECT; if (DIRECT.equals(type)) { exchange = new DirectExchange(name, durable, autoDelete, arguments); } else if (TOPIC.equals(type)) { exchange = new TopicExchange(name, durable, autoDelete, arguments); } else if (FANOUT.equals(type)) { exchange = new FanoutExchange(name, durable, autoDelete, arguments); } else if (HEADERS.equals(type)) { exchange = new HeadersExchange(name, durable, autoDelete, arguments); } else { exchange = new CustomExchange(name, type, durable, autoDelete, arguments); } currentExchange = exchange; } else { currentExchange = new DirectExchange(name); } try { rabbitAdmin.declareExchange(currentExchange); } catch (Exception e) { log.error(e.getMessage(), e); dispatchError(e); } return exchange; } else if (QUEUE.equals(node)) { boolean durable = params.containsKey(DURABLE) ? (Boolean) params.get(DURABLE) : false; boolean autoDelete = params.containsKey(AUTO_DELETE) ? (Boolean) params.get(AUTO_DELETE) : true; String routingKey = params.containsKey(ROUTING_KEY) ? params.get(ROUTING_KEY).toString() : null; if (null != routingKey) { currentRoutingKey = routingKey; } boolean exclusive = params.containsKey(EXCLUSIVE) ? (Boolean) params.get(EXCLUSIVE) : false; Map arguments = params.containsKey(ARGUMENTS) ? (Map) params.get(ARGUMENTS) : null; Queue q = null; String name; if (params.containsKey(NAME)) { try { if (null == params.get(NAME)) { name = null; } else { name = params.get(NAME).toString(); } if (name == null) { q = rabbitAdmin.declareQueue(); } else { q = new Queue(name, durable, exclusive, autoDelete); rabbitAdmin.declareQueue(q); } currentQueue = q; if (null != currentExchange) { Binding binding = null; if (currentExchange instanceof FanoutExchange) { binding = BindingBuilder.bind(q).to((FanoutExchange) currentExchange); } else if (currentExchange instanceof DirectExchange) { binding = BindingBuilder.bind(q).to((DirectExchange) currentExchange).with(routingKey); } else if (currentExchange instanceof HeadersExchange) { binding = BindingBuilder.bind(q).to((HeadersExchange) currentExchange) .whereAll(arguments).match(); } else if (currentExchange instanceof TopicExchange) { binding = BindingBuilder.bind(q).to((TopicExchange) currentExchange).with(routingKey); } else if (currentExchange instanceof CustomExchange) { binding = BindingBuilder.bind(q).to(currentExchange).with(routingKey).noargs(); } if (null != binding) { rabbitAdmin.declareBinding(binding); } } } catch (Exception e) { log.error(e.getMessage(), e); dispatchError(e); } } return q; } return null; }
From source file:org.springframework.amqp.rabbit.annotation.RabbitListenerAnnotationBeanPostProcessor.java
private Exchange directExchange(org.springframework.amqp.rabbit.annotation.Exchange bindingExchange, String exchangeName) {//from w w w . j a v a 2 s .c om return new DirectExchange(exchangeName, resolveExpressionAsBoolean(bindingExchange.durable()), resolveExpressionAsBoolean(bindingExchange.autoDelete()), resolveArguments(bindingExchange.arguments())); }