use of org.springframework.cloud.stream.binder.BinderFactory in project spring-cloud-gcp by spring-cloud.
the class PubSubExtendedBindingsPropertiesTests method testExtendedPropertiesOverrideDefaults.
@Test
public void testExtendedPropertiesOverrideDefaults() {
BinderFactory binderFactory = this.context.getBeanFactory().getBean(BinderFactory.class);
PubSubMessageChannelBinder binder = (PubSubMessageChannelBinder) binderFactory.getBinder("pubsub", MessageChannel.class);
assertThat(binder.getExtendedConsumerProperties("custom-in").isAutoCreateResources()).isFalse();
assertThat(binder.getExtendedConsumerProperties("input").isAutoCreateResources()).isTrue();
assertThat(binder.getExtendedConsumerProperties("custom-in").getAckMode()).isEqualTo(AckMode.AUTO);
assertThat(binder.getExtendedConsumerProperties("input").getAckMode()).isEqualTo(AckMode.AUTO_ACK);
}
use of org.springframework.cloud.stream.binder.BinderFactory in project spring-cloud-stream by spring-cloud.
the class BindingServiceTests method testUnrecognizedBinderAllowedIfNotUsed.
@SuppressWarnings("unchecked")
@Test
public void testUnrecognizedBinderAllowedIfNotUsed() {
HashMap<String, String> properties = new HashMap<>();
properties.put("spring.cloud.stream.bindings.input.destination", "fooInput");
properties.put("spring.cloud.stream.bindings.output.destination", "fooOutput");
properties.put("spring.cloud.stream.defaultBinder", "mock1");
properties.put("spring.cloud.stream.binders.mock1.type", "mock");
properties.put("spring.cloud.stream.binders.kafka1.type", "kafka");
BindingServiceProperties bindingServiceProperties = createBindingServiceProperties(properties);
BinderFactory binderFactory = new BindingServiceConfiguration().binderFactory(createMockBinderTypeRegistry(), bindingServiceProperties, Mockito.mock(ObjectProvider.class));
BindingService bindingService = new BindingService(bindingServiceProperties, binderFactory, new ObjectMapper());
bindingService.bindConsumer(new DirectChannel(), "input");
bindingService.bindProducer(new DirectChannel(), "output");
}
use of org.springframework.cloud.stream.binder.BinderFactory in project spring-cloud-stream by spring-cloud.
the class BindingServiceTests method testUnrecognizedBinderDisallowedIfUsed.
@SuppressWarnings("unchecked")
@Test
public void testUnrecognizedBinderDisallowedIfUsed() {
HashMap<String, String> properties = new HashMap<>();
properties.put("spring.cloud.stream.bindings.input.destination", "fooInput");
properties.put("spring.cloud.stream.bindings.input.binder", "mock1");
properties.put("spring.cloud.stream.bindings.output.destination", "fooOutput");
properties.put("spring.cloud.stream.bindings.output.type", "kafka1");
properties.put("spring.cloud.stream.binders.mock1.type", "mock");
properties.put("spring.cloud.stream.binders.kafka1.type", "kafka");
BindingServiceProperties bindingServiceProperties = createBindingServiceProperties(properties);
BinderFactory binderFactory = new BindingServiceConfiguration().binderFactory(createMockBinderTypeRegistry(), bindingServiceProperties, Mockito.mock(ObjectProvider.class));
BindingService bindingService = new BindingService(bindingServiceProperties, binderFactory, new ObjectMapper());
bindingService.bindConsumer(new DirectChannel(), "input");
try {
bindingService.bindProducer(new DirectChannel(), "output");
fail("Expected 'Unknown binder configuration'");
} catch (IllegalArgumentException e) {
assertThat(e).hasMessageContaining("Binder type kafka is not defined");
}
}
use of org.springframework.cloud.stream.binder.BinderFactory in project spring-cloud-stream by spring-cloud.
the class StreamBridge method resolveDestination.
@SuppressWarnings({ "unchecked" })
synchronized MessageChannel resolveDestination(String destinationName, ProducerProperties producerProperties, String binderName) {
MessageChannel messageChannel = this.channelCache.get(destinationName);
if (messageChannel == null && this.applicationContext.containsBean(destinationName)) {
messageChannel = this.applicationContext.getBean(destinationName, MessageChannel.class);
}
if (messageChannel == null) {
messageChannel = new DirectWithAttributesChannel();
if (this.destinationBindingCallback != null) {
Object extendedProducerProperties = this.bindingService.getExtendedProducerProperties(messageChannel, destinationName);
this.destinationBindingCallback.configure(destinationName, messageChannel, producerProperties, extendedProducerProperties);
}
Binder binder = null;
if (StringUtils.hasText(binderName)) {
BinderFactory binderFactory = this.applicationContext.getBean(BinderFactory.class);
binder = binderFactory.getBinder(binderName, messageChannel.getClass());
}
if (producerProperties != null && producerProperties.isPartitioned()) {
BindingProperties bindingProperties = this.bindingServiceProperties.getBindingProperties(destinationName);
((AbstractMessageChannel) messageChannel).addInterceptor(new DefaultPartitioningInterceptor(bindingProperties, this.applicationContext.getBeanFactory()));
}
this.addInterceptors((AbstractMessageChannel) messageChannel, destinationName);
this.bindingService.bindProducer(messageChannel, destinationName, false, binder);
this.channelCache.put(destinationName, messageChannel);
}
return messageChannel;
}
Aggregations