private void declareExchanges(final Channel channel, final Exchange... exchanges) throws IOException { for (final Exchange exchange : exchanges) { if (this.logger.isDebugEnabled()) { this.logger.debug("declaring Exchange '" + exchange.getName() + "'"); } if (!isDeclaringDefaultExchange(exchange)) { try { if (exchange.isDelayed()) { Map<String, Object> arguments = exchange.getArguments(); if (arguments == null) { arguments = new HashMap<String, Object>(); } else { arguments = new HashMap<String, Object>(arguments); } arguments.put("x-delayed-type", exchange.getType()); channel.exchangeDeclare(exchange.getName(), DELAYED_MESSAGE_EXCHANGE, exchange.isDurable(), exchange.isAutoDelete(), exchange.isInternal(), arguments); } else { channel.exchangeDeclare(exchange.getName(), exchange.getType(), exchange.isDurable(), exchange.isAutoDelete(), exchange.isInternal(), exchange.getArguments()); } } catch (IOException e) { logOrRethrowDeclarationException(exchange, "exchange", e); } } } }
private void declareExchanges(final Channel channel, final Exchange... exchanges) throws IOException { for (final Exchange exchange : exchanges) { if (this.logger.isDebugEnabled()) { this.logger.debug("declaring Exchange '" + exchange.getName() + "'"); } if (!isDeclaringDefaultExchange(exchange)) { try { if (exchange.isDelayed()) { Map<String, Object> arguments = exchange.getArguments(); if (arguments == null) { arguments = new HashMap<String, Object>(); } else { arguments = new HashMap<String, Object>(arguments); } arguments.put("x-delayed-type", exchange.getType()); channel.exchangeDeclare(exchange.getName(), DELAYED_MESSAGE_EXCHANGE, exchange.isDurable(), exchange.isAutoDelete(), exchange.isInternal(), arguments); } else { channel.exchangeDeclare(exchange.getName(), exchange.getType(), exchange.isDurable(), exchange.isAutoDelete(), exchange.isInternal(), exchange.getArguments()); } } catch (IOException e) { logOrRethrowDeclarationException(exchange, "exchange", e); } } } }
@Test public void testExchangeBuilder() { Exchange exchange = ExchangeBuilder.directExchange("foo").autoDelete().delayed().internal() .withArgument("foo", "bar").build(); assertThat(exchange, instanceOf(DirectExchange.class)); assertTrue(exchange.isAutoDelete()); assertTrue(exchange.isDurable()); assertTrue(exchange.isInternal()); assertTrue(exchange.isDelayed()); assertThat((String) exchange.getArguments().get("foo"), equalTo("bar")); exchange = ExchangeBuilder.topicExchange("foo").durable(false).build(); assertThat(exchange, instanceOf(TopicExchange.class)); assertFalse(exchange.isAutoDelete()); assertFalse(exchange.isDurable()); assertFalse(exchange.isInternal()); assertFalse(exchange.isDelayed()); exchange = ExchangeBuilder.fanoutExchange("foo").build(); assertThat(exchange, instanceOf(FanoutExchange.class)); assertFalse(exchange.isAutoDelete()); assertTrue(exchange.isDurable()); assertFalse(exchange.isInternal()); assertFalse(exchange.isDelayed()); exchange = ExchangeBuilder.headersExchange("foo").build(); assertThat(exchange, instanceOf(HeadersExchange.class)); assertFalse(exchange.isAutoDelete()); assertTrue(exchange.isDurable()); assertFalse(exchange.isInternal()); assertFalse(exchange.isDelayed()); }