/** * Add a binding * */ public RabbitContextBuilder add(Binding binding) { bindings.put(Arrays.toString(new String[] {binding.getExchange(), binding.getExchange(), binding.getRoutingKey()}), binding); return this; }
/** * Add a binding * */ public RabbitContextBuilder add(Binding binding) { bindings.put(Arrays.toString(new String[] {binding.getExchange(), binding.getExchange(), binding.getRoutingKey()}), binding); return this; }
private boolean isImplicitQueueBinding(Binding binding) { return isDefaultExchange(binding.getExchange()) && binding.getDestination().equals(binding.getRoutingKey()); }
private boolean isImplicitQueueBinding(Binding binding) { return isDefaultExchange(binding.getExchange()) && binding.getDestination().equals(binding.getRoutingKey()); }
MessageExchangeDto exchange = exchangeMap.get(b.getExchange()); if (exchange == null) exchange = new MessageExchangeDto(b.getExchange(), MessageDirectionType.CONSUME); exchangeMap.put(b.getExchange(), exchange); List<BindingDataDto> exchangeBinding = exchangeToBindingMap.get(b.getExchange()); if (exchangeBinding == null) exchangeToBindingMap.put(b.getExchange(), exchangeBinding);
MessageExchangeDto exchange = exchangeMap.get(b.getExchange()); if (exchange == null) exchange = new MessageExchangeDto(b.getExchange(), MessageDirectionType.CONSUME); exchangeMap.put(b.getExchange(), exchange); List<BindingDataDto> exchangeBinding = exchangeToBindingMap.get(b.getExchange()); if (exchangeBinding == null) exchangeToBindingMap.put(b.getExchange(), exchangeBinding);
private void declareBindings(final Channel channel, final Binding... bindings) throws IOException { for (Binding binding : bindings) { if (this.logger.isDebugEnabled()) { this.logger.debug("Binding destination [" + binding.getDestination() + " (" + binding.getDestinationType() + ")] to exchange [" + binding.getExchange() + "] with routing key [" + binding.getRoutingKey() + "]"); } try { if (binding.isDestinationQueue()) { if (!isDeclaringImplicitQueueBinding(binding)) { channel.queueBind(binding.getDestination(), binding.getExchange(), binding.getRoutingKey(), binding.getArguments()); } } else { channel.exchangeBind(binding.getDestination(), binding.getExchange(), binding.getRoutingKey(), binding.getArguments()); } } catch (IOException e) { logOrRethrowDeclarationException(binding, "binding", e); } } }
private void declareBindings(final Channel channel, final Binding... bindings) throws IOException { for (Binding binding : bindings) { if (this.logger.isDebugEnabled()) { this.logger.debug("Binding destination [" + binding.getDestination() + " (" + binding.getDestinationType() + ")] to exchange [" + binding.getExchange() + "] with routing key [" + binding.getRoutingKey() + "]"); } try { if (binding.isDestinationQueue()) { if (!isDeclaringImplicitQueueBinding(binding)) { channel.queueBind(binding.getDestination(), binding.getExchange(), binding.getRoutingKey(), binding.getArguments()); } } else { channel.exchangeBind(binding.getDestination(), binding.getExchange(), binding.getRoutingKey(), binding.getArguments()); } } catch (IOException e) { logOrRethrowDeclarationException(binding, "binding", e); } } }
@Test public void testBindings() throws Exception { Map<String, Binding> bindings = beanFactory.getBeansOfType(Binding.class); // 4 for each exchange type assertEquals(13, bindings.size()); for (Map.Entry<String, Binding> bindingEntry : bindings.entrySet()) { Binding binding = bindingEntry.getValue(); if ("headers-test".equals(binding.getExchange()) && "bucket".equals(binding.getDestination())) { Map<String, Object> arguments = binding.getArguments(); assertEquals(3, arguments.size()); break; } } }
@Override @ManagedOperation(description = "Remove a binding from the broker (this operation is not available remotely)") public void removeBinding(final Binding binding) { this.rabbitTemplate.execute(channel -> { if (binding.isDestinationQueue()) { if (isRemovingImplicitQueueBinding(binding)) { return null; } channel.queueUnbind(binding.getDestination(), binding.getExchange(), binding.getRoutingKey(), binding.getArguments()); } else { channel.exchangeUnbind(binding.getDestination(), binding.getExchange(), binding.getRoutingKey(), binding.getArguments()); } return null; }); }
@Override @ManagedOperation(description = "Remove a binding from the broker (this operation is not available remotely)") public void removeBinding(final Binding binding) { this.rabbitTemplate.execute(channel -> { if (binding.isDestinationQueue()) { if (isRemovingImplicitQueueBinding(binding)) { return null; } channel.queueUnbind(binding.getDestination(), binding.getExchange(), binding.getRoutingKey(), binding.getArguments()); } else { channel.exchangeUnbind(binding.getDestination(), binding.getExchange(), binding.getRoutingKey(), binding.getArguments()); } return null; }); }
@Test public void customBinding() { class CustomExchange extends AbstractExchange { CustomExchange(String name) { super(name); } @Override public String getType() { return "x-custom"; } } Object argumentObject = new Object(); CustomExchange customExchange = new CustomExchange("c"); String routingKey = "r"; Binding binding = BindingBuilder.// bind(queue).// to(customExchange).// with(routingKey).// and(Collections.<String, Object>singletonMap("k", argumentObject)); assertNotNull(binding); assertEquals(argumentObject, binding.getArguments().get("k")); assertEquals(customExchange.getName(), binding.getExchange()); assertEquals(Binding.DestinationType.QUEUE, binding.getDestinationType()); assertEquals(queue.getName(), binding.getDestination()); assertEquals(routingKey, binding.getRoutingKey()); }
@Test public void fanoutBinding() { FanoutExchange fanoutExchange = new FanoutExchange("f"); Binding binding = BindingBuilder.bind(queue).to(fanoutExchange); assertNotNull(binding); assertEquals(fanoutExchange.getName(), binding.getExchange()); assertEquals("", binding.getRoutingKey()); assertEquals(Binding.DestinationType.QUEUE, binding.getDestinationType()); assertEquals(queue.getName(), binding.getDestination()); }
@Test public void directBinding() { DirectExchange directExchange = new DirectExchange("d"); String routingKey = "r"; Binding binding = BindingBuilder.bind(queue).to(directExchange).with(routingKey); assertNotNull(binding); assertEquals(directExchange.getName(), binding.getExchange()); assertEquals(Binding.DestinationType.QUEUE, binding.getDestinationType()); assertEquals(queue.getName(), binding.getDestination()); assertEquals(routingKey, binding.getRoutingKey()); }
@Test public void topicBinding() { TopicExchange topicExchange = new TopicExchange("t"); String routingKey = "r"; Binding binding = BindingBuilder.bind(queue).to(topicExchange).with(routingKey); assertNotNull(binding); assertEquals(topicExchange.getName(), binding.getExchange()); assertEquals(Binding.DestinationType.QUEUE, binding.getDestinationType()); assertEquals(queue.getName(), binding.getDestination()); assertEquals(routingKey, binding.getRoutingKey()); }
@Test public void exchangeBinding() { DirectExchange directExchange = new DirectExchange("d"); FanoutExchange fanoutExchange = new FanoutExchange("f"); Binding binding = BindingBuilder.bind(directExchange).to(fanoutExchange); assertNotNull(binding); assertEquals(fanoutExchange.getName(), binding.getExchange()); assertEquals(Binding.DestinationType.EXCHANGE, binding.getDestinationType()); assertEquals(directExchange.getName(), binding.getDestination()); assertEquals("", binding.getRoutingKey()); }
@Test public void directBindingWithQueueName() { DirectExchange directExchange = new DirectExchange("d"); Binding binding = BindingBuilder.bind(queue).to(directExchange).withQueueName(); assertNotNull(binding); assertEquals(directExchange.getName(), binding.getExchange()); assertEquals(Binding.DestinationType.QUEUE, binding.getDestinationType()); assertEquals(queue.getName(), binding.getDestination()); assertEquals(queue.getName(), binding.getRoutingKey()); }
@Test public void headerBinding() { HeadersExchange headersExchange = new HeadersExchange("h"); String headerKey = "headerKey"; Binding binding = BindingBuilder.bind(queue).to(headersExchange).where(headerKey).exists(); assertNotNull(binding); assertEquals(headersExchange.getName(), binding.getExchange()); assertEquals(Binding.DestinationType.QUEUE, binding.getDestinationType()); assertEquals(queue.getName(), binding.getDestination()); assertEquals("", binding.getRoutingKey()); }