Java Code Examples for org.springframework.cloud.stream.config.BindingProperties#setDestination()

The following examples show how to use org.springframework.cloud.stream.config.BindingProperties#setDestination() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: BindingServiceTests.java    From spring-cloud-stream with Apache License 2.0 6 votes vote down vote up
@Test
public void testProducerPropertiesValidation() {
	BindingServiceProperties serviceProperties = new BindingServiceProperties();
	Map<String, BindingProperties> bindingProperties = new HashMap<>();
	BindingProperties props = new BindingProperties();
	ProducerProperties producerProperties = new ProducerProperties();
	producerProperties.setPartitionCount(0);
	props.setDestination("foo");
	props.setProducer(producerProperties);
	final String outputChannelName = "output";
	bindingProperties.put(outputChannelName, props);
	serviceProperties.setBindings(bindingProperties);
	DefaultBinderFactory binderFactory = createMockBinderFactory();
	BindingService service = new BindingService(serviceProperties, binderFactory);
	MessageChannel outputChannel = new DirectChannel();
	try {
		service.bindProducer(outputChannel, outputChannelName);
		fail("Producer properties should be validated.");
	}
	catch (IllegalStateException e) {
		assertThat(e)
				.hasMessageContaining("Partition count should be greater than zero.");
	}
}
 
Example 2
Source File: BindingServiceTests.java    From spring-cloud-stream with Apache License 2.0 6 votes vote down vote up
@Test
public void testConsumerPropertiesValidation() {
	BindingServiceProperties serviceProperties = new BindingServiceProperties();
	Map<String, BindingProperties> bindingProperties = new HashMap<>();
	BindingProperties props = new BindingProperties();
	ConsumerProperties consumerProperties = new ConsumerProperties();
	consumerProperties.setConcurrency(0);
	props.setDestination("foo");
	props.setConsumer(consumerProperties);
	final String inputChannelName = "input";
	bindingProperties.put(inputChannelName, props);
	serviceProperties.setBindings(bindingProperties);
	DefaultBinderFactory binderFactory = createMockBinderFactory();
	BindingService service = new BindingService(serviceProperties, binderFactory);
	MessageChannel inputChannel = new DirectChannel();
	try {
		service.bindConsumer(inputChannel, inputChannelName);
		fail("Consumer properties should be validated.");
	}
	catch (IllegalStateException e) {
		assertThat(e)
				.hasMessageContaining("Concurrency should be greater than zero.");
	}
}
 
Example 3
Source File: BusAutoConfigurationTests.java    From spring-cloud-bus with Apache License 2.0 6 votes vote down vote up
@Test
public void initDoesNotOverrideCustomDestination() {
	HashMap<String, BindingProperties> properties = new HashMap<>();
	BindingProperties input = new BindingProperties();
	input.setDestination("mydestination");
	properties.put(SpringCloudBusClient.INPUT, input);
	BindingProperties output = new BindingProperties();
	output.setDestination("mydestination");
	properties.put(SpringCloudBusClient.OUTPUT, output);

	setupBusAutoConfig(properties);

	BindingProperties inputProps = properties.get(SpringCloudBusClient.INPUT);
	assertThat(inputProps.getDestination()).isEqualTo("mydestination");

	BindingProperties outputProps = properties.get(SpringCloudBusClient.OUTPUT);
	assertThat(outputProps.getDestination()).isEqualTo("mydestination");
}
 
Example 4
Source File: BindingServiceTests.java    From spring-cloud-stream with Apache License 2.0 5 votes vote down vote up
@SuppressWarnings({ "unchecked", "rawtypes" })
@Test
public void testDefaultGroup() throws Exception {
	BindingServiceProperties properties = new BindingServiceProperties();
	Map<String, BindingProperties> bindingProperties = new HashMap<>();
	BindingProperties props = new BindingProperties();
	props.setDestination("foo");
	final String inputChannelName = "input";
	bindingProperties.put(inputChannelName, props);
	properties.setBindings(bindingProperties);
	DefaultBinderFactory binderFactory = createMockBinderFactory();
	Binder binder = binderFactory.getBinder("mock", MessageChannel.class);
	BindingService service = new BindingService(properties, binderFactory);
	MessageChannel inputChannel = new DirectChannel();
	Binding<MessageChannel> mockBinding = Mockito.mock(Binding.class);
	when(binder.bindConsumer(eq("foo"), isNull(), same(inputChannel),
			any(ConsumerProperties.class))).thenReturn(mockBinding);
	Collection<Binding<MessageChannel>> bindings = service.bindConsumer(inputChannel,
			inputChannelName);
	assertThat(bindings).hasSize(1);
	Binding<MessageChannel> binding = bindings.iterator().next();
	assertThat(binding).isSameAs(mockBinding);
	service.unbindConsumers(inputChannelName);
	verify(binder).bindConsumer(eq("foo"), isNull(), same(inputChannel),
			any(ConsumerProperties.class));
	verify(binding).unbind();
	binderFactory.destroy();
}
 
Example 5
Source File: BindingServiceTests.java    From spring-cloud-stream with Apache License 2.0 5 votes vote down vote up
@SuppressWarnings({ "unchecked", "rawtypes" })
@Test
public void testExplicitGroup() throws Exception {
	BindingServiceProperties properties = new BindingServiceProperties();
	Map<String, BindingProperties> bindingProperties = new HashMap<>();
	BindingProperties props = new BindingProperties();
	props.setDestination("foo");
	props.setGroup("fooGroup");
	final String inputChannelName = "input";
	bindingProperties.put(inputChannelName, props);
	properties.setBindings(bindingProperties);
	DefaultBinderFactory binderFactory = createMockBinderFactory();
	Binder binder = binderFactory.getBinder("mock", MessageChannel.class);
	BindingService service = new BindingService(properties, binderFactory);
	MessageChannel inputChannel = new DirectChannel();
	Binding<MessageChannel> mockBinding = Mockito.mock(Binding.class);
	when(binder.bindConsumer(eq("foo"), eq("fooGroup"), same(inputChannel),
			any(ConsumerProperties.class))).thenReturn(mockBinding);
	Collection<Binding<MessageChannel>> bindings = service.bindConsumer(inputChannel,
			inputChannelName);
	assertThat(bindings).hasSize(1);
	Binding<MessageChannel> binding = bindings.iterator().next();
	assertThat(binding).isSameAs(mockBinding);

	service.unbindConsumers(inputChannelName);
	verify(binder).bindConsumer(eq("foo"), eq(props.getGroup()), same(inputChannel),
			any(ConsumerProperties.class));
	verify(binding).unbind();
	binderFactory.destroy();
}
 
Example 6
Source File: BusAutoConfiguration.java    From spring-cloud-bus with Apache License 2.0 5 votes vote down vote up
@PostConstruct
public void init() {
	BindingProperties inputBinding = this.bindings.getBindings()
			.get(SpringCloudBusClient.INPUT);
	if (inputBinding == null) {
		this.bindings.getBindings().put(SpringCloudBusClient.INPUT,
				new BindingProperties());
	}
	BindingProperties input = this.bindings.getBindings()
			.get(SpringCloudBusClient.INPUT);
	if (input.getDestination() == null
			|| input.getDestination().equals(SpringCloudBusClient.INPUT)) {
		input.setDestination(this.bus.getDestination());
	}
	BindingProperties outputBinding = this.bindings.getBindings()
			.get(SpringCloudBusClient.OUTPUT);
	if (outputBinding == null) {
		this.bindings.getBindings().put(SpringCloudBusClient.OUTPUT,
				new BindingProperties());
	}
	BindingProperties output = this.bindings.getBindings()
			.get(SpringCloudBusClient.OUTPUT);
	if (output.getDestination() == null
			|| output.getDestination().equals(SpringCloudBusClient.OUTPUT)) {
		output.setDestination(this.bus.getDestination());
	}
}
 
Example 7
Source File: BusAutoConfigurationTests.java    From spring-cloud-bus with Apache License 2.0 5 votes vote down vote up
@Test
public void initSetsBindingDestinationIfNotNullDefault() {
	HashMap<String, BindingProperties> properties = new HashMap<>();
	BindingProperties input = new BindingProperties();
	input.setDestination(SpringCloudBusClient.INPUT);
	properties.put(SpringCloudBusClient.INPUT, input);
	BindingProperties output = new BindingProperties();
	output.setDestination(SpringCloudBusClient.OUTPUT);
	properties.put(SpringCloudBusClient.OUTPUT, output);

	testDestinations(properties);
}
 
Example 8
Source File: BindingServiceTests.java    From spring-cloud-stream with Apache License 2.0 4 votes vote down vote up
@SuppressWarnings({ "unchecked", "rawtypes" })
@Test
public void testMultipleConsumerBindings() throws Exception {
	BindingServiceProperties properties = new BindingServiceProperties();
	Map<String, BindingProperties> bindingProperties = new HashMap<>();
	BindingProperties props = new BindingProperties();
	props.setDestination("foo,bar");
	final String inputChannelName = "input";
	bindingProperties.put(inputChannelName, props);

	properties.setBindings(bindingProperties);

	DefaultBinderFactory binderFactory = createMockBinderFactory();

	Binder binder = binderFactory.getBinder("mock", MessageChannel.class);
	BindingService service = new BindingService(properties, binderFactory);
	MessageChannel inputChannel = new DirectChannel();

	Binding<MessageChannel> mockBinding1 = Mockito.mock(Binding.class);
	Binding<MessageChannel> mockBinding2 = Mockito.mock(Binding.class);

	when(binder.bindConsumer(eq("foo"), isNull(), same(inputChannel),
			any(ConsumerProperties.class))).thenReturn(mockBinding1);
	when(binder.bindConsumer(eq("bar"), isNull(), same(inputChannel),
			any(ConsumerProperties.class))).thenReturn(mockBinding2);

	Collection<Binding<MessageChannel>> bindings = service.bindConsumer(inputChannel,
			"input");
	assertThat(bindings).hasSize(2);

	Iterator<Binding<MessageChannel>> iterator = bindings.iterator();
	Binding<MessageChannel> binding1 = iterator.next();
	Binding<MessageChannel> binding2 = iterator.next();

	assertThat(binding1).isSameAs(mockBinding1);
	assertThat(binding2).isSameAs(mockBinding2);

	service.unbindConsumers("input");

	verify(binder).bindConsumer(eq("foo"), isNull(), same(inputChannel),
			any(ConsumerProperties.class));
	verify(binder).bindConsumer(eq("bar"), isNull(), same(inputChannel),
			any(ConsumerProperties.class));
	verify(binding1).unbind();
	verify(binding2).unbind();

	binderFactory.destroy();
}
 
Example 9
Source File: BindingServiceTests.java    From spring-cloud-stream with Apache License 2.0 4 votes vote down vote up
@SuppressWarnings({ "unchecked", "rawtypes" })
@Test
public void testMultipleConsumerBindingsFromIndexList() throws Exception {
	BindingServiceProperties properties = new BindingServiceProperties();
	Map<String, BindingProperties> bindingProperties = new HashMap<>();
	BindingProperties props = new BindingProperties();
	props.setDestination("foo");

	ConsumerProperties consumer = properties.getConsumerProperties("input");
	consumer.setInstanceIndexList(Arrays.asList(0, 1));
	consumer.setInstanceCount(2);
	consumer.setPartitioned(true);
	props.setConsumer(consumer);

	final String inputChannelName = "input";
	bindingProperties.put(inputChannelName, props);

	properties.setBindings(bindingProperties);

	DefaultBinderFactory binderFactory = createMockBinderFactory();

	Binder binder = binderFactory.getBinder("mock", MessageChannel.class);
	BindingService service = new BindingService(properties, binderFactory);
	MessageChannel inputChannel = new DirectChannel();

	Binding<MessageChannel> mockBinding1 = Mockito.mock(Binding.class, "FirstBinding");
	Binding<MessageChannel> mockBinding2 = Mockito.mock(Binding.class, "SecondBinding");

	ArgumentCaptor<ConsumerProperties> captor = ArgumentCaptor.forClass(ConsumerProperties.class);

	when(binder.bindConsumer(eq("foo"), isNull(), same(inputChannel),
		any(ConsumerProperties.class))).thenReturn(mockBinding1).thenReturn(mockBinding2);

	Collection<Binding<MessageChannel>> bindings = service.bindConsumer(inputChannel,
		"input");
	assertThat(bindings).hasSize(2);

	Iterator<Binding<MessageChannel>> iterator = bindings.iterator();
	Binding<MessageChannel> binding1 = iterator.next();
	Binding<MessageChannel> binding2 = iterator.next();

	assertThat(binding1).isSameAs(mockBinding1);
	assertThat(binding2).isSameAs(mockBinding2);

	service.unbindConsumers("input");

	verify(binder, times(2)).bindConsumer(eq("foo"), isNull(), same(inputChannel),
		captor.capture());
	verify(binding1).unbind();
	verify(binding2).unbind();

	List<ConsumerProperties> allValues = captor.getAllValues();

	assertThat(allValues.size()).isEqualTo(2);

	assertThat(allValues.get(0).getInstanceIndex()).isEqualTo(0);
	assertThat(allValues.get(1).getInstanceIndex()).isEqualTo(1);

	binderFactory.destroy();
}
 
Example 10
Source File: BindingServiceTests.java    From spring-cloud-stream with Apache License 2.0 4 votes vote down vote up
@SuppressWarnings({ "unchecked", "rawtypes" })
@Test
public void testConsumerBindingWhenMultiplexingIsEnabled() throws Exception {
	BindingServiceProperties properties = new BindingServiceProperties();
	Map<String, BindingProperties> bindingProperties = new HashMap<>();
	BindingProperties props = new BindingProperties();
	props.setDestination("foo,bar");

	ConsumerProperties consumer = properties.getConsumerProperties("input");
	consumer.setMultiplex(true);
	props.setConsumer(consumer);

	final String inputChannelName = "input";
	bindingProperties.put(inputChannelName, props);

	properties.setBindings(bindingProperties);

	DefaultBinderFactory binderFactory = createMockBinderFactory();

	Binder binder = binderFactory.getBinder("mock", MessageChannel.class);
	BindingService service = new BindingService(properties, binderFactory);
	MessageChannel inputChannel = new DirectChannel();

	Binding<MessageChannel> mockBinding1 = Mockito.mock(Binding.class);

	when(binder.bindConsumer(eq("foo,bar"), isNull(), same(inputChannel),
			any(ConsumerProperties.class))).thenReturn(mockBinding1);

	Collection<Binding<MessageChannel>> bindings = service.bindConsumer(inputChannel,
			"input");
	assertThat(bindings).hasSize(1);

	Iterator<Binding<MessageChannel>> iterator = bindings.iterator();
	Binding<MessageChannel> binding1 = iterator.next();

	assertThat(binding1).isSameAs(mockBinding1);

	service.unbindConsumers("input");

	verify(binder).bindConsumer(eq("foo,bar"), isNull(), same(inputChannel),
			any(ConsumerProperties.class));
	verify(binding1).unbind();

	binderFactory.destroy();
}
 
Example 11
Source File: BindingServiceTests.java    From spring-cloud-stream with Apache License 2.0 4 votes vote down vote up
@SuppressWarnings({ "rawtypes", "unchecked" })
@Test
@Ignore
public void testLateBindingConsumer() throws Exception {
	BindingServiceProperties properties = new BindingServiceProperties();
	properties.setBindingRetryInterval(1);
	Map<String, BindingProperties> bindingProperties = new HashMap<>();
	BindingProperties props = new BindingProperties();
	props.setDestination("foo");
	final String inputChannelName = "input";
	bindingProperties.put(inputChannelName, props);
	properties.setBindings(bindingProperties);
	DefaultBinderFactory binderFactory = createMockBinderFactory();
	Binder binder = binderFactory.getBinder("mock", MessageChannel.class);
	ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler();
	scheduler.initialize();
	BindingService service = new BindingService(properties, binderFactory, scheduler);
	MessageChannel inputChannel = new DirectChannel();
	final Binding<MessageChannel> mockBinding = Mockito.mock(Binding.class);
	final CountDownLatch fail = new CountDownLatch(2);
	doAnswer(i -> {
		fail.countDown();
		if (fail.getCount() == 1) {
			throw new RuntimeException("fail");
		}
		return mockBinding;
	}).when(binder).bindConsumer(eq("foo"), isNull(), same(inputChannel),
			any(ConsumerProperties.class));
	Collection<Binding<MessageChannel>> bindings = service.bindConsumer(inputChannel,
			inputChannelName);
	assertThat(fail.await(10, TimeUnit.SECONDS)).isTrue();
	assertThat(bindings).hasSize(1);
	Binding<MessageChannel> delegate = TestUtils
			.getPropertyValue(bindings.iterator().next(), "delegate", Binding.class);
	int n = 0;
	while (n++ < 300 && delegate == null) {
		Thread.sleep(400);
	}
	assertThat(delegate).isSameAs(mockBinding);
	service.unbindConsumers(inputChannelName);
	verify(binder, times(2)).bindConsumer(eq("foo"), isNull(), same(inputChannel),
			any(ConsumerProperties.class));
	verify(delegate).unbind();
	binderFactory.destroy();
}
 
Example 12
Source File: BindingServiceTests.java    From spring-cloud-stream with Apache License 2.0 4 votes vote down vote up
@SuppressWarnings({ "rawtypes", "unchecked" })
@Test
public void testLateBindingProducer() throws Exception {
	BindingServiceProperties properties = new BindingServiceProperties();
	properties.setBindingRetryInterval(1);
	Map<String, BindingProperties> bindingProperties = new HashMap<>();
	BindingProperties props = new BindingProperties();
	props.setDestination("foo");
	final String outputChannelName = "output";
	bindingProperties.put(outputChannelName, props);
	properties.setBindings(bindingProperties);
	DefaultBinderFactory binderFactory = createMockBinderFactory();
	Binder binder = binderFactory.getBinder("mock", MessageChannel.class);
	ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler();
	scheduler.initialize();
	BindingService service = new BindingService(properties, binderFactory, scheduler);
	MessageChannel outputChannel = new DirectChannel();
	final Binding<MessageChannel> mockBinding = Mockito.mock(Binding.class);
	final CountDownLatch fail = new CountDownLatch(2);
	doAnswer(i -> {
		fail.countDown();
		if (fail.getCount() == 1) {
			throw new RuntimeException("fail");
		}
		return mockBinding;
	}).when(binder).bindProducer(eq("foo"), same(outputChannel),
			any(ProducerProperties.class));
	Binding<MessageChannel> binding = service.bindProducer(outputChannel,
			outputChannelName);
	assertThat(fail.await(10, TimeUnit.SECONDS)).isTrue();
	assertThat(binding).isNotNull();
	Binding delegate = TestUtils.getPropertyValue(binding, "delegate", Binding.class);
	int n = 0;
	while (n++ < 300 && delegate == null) {
		Thread.sleep(100);
		delegate = TestUtils.getPropertyValue(binding, "delegate", Binding.class);
	}
	assertThat(delegate).isSameAs(mockBinding);
	service.unbindProducers(outputChannelName);
	verify(binder, times(2)).bindProducer(eq("foo"), same(outputChannel),
			any(ProducerProperties.class));
	verify(delegate).unbind();
	binderFactory.destroy();
	scheduler.destroy();
}