Display binder name in bindings actuator endpoint

- Resolve binder name and type from default binder if they
   are not provided as part of binding properties.

Resolves https://github.com/spring-cloud/spring-cloud-stream/issues/2664
This commit is contained in:
Soby Chacko
2023-03-27 13:44:44 -04:00
parent 28b72356ba
commit 1856271ae1

View File

@@ -210,6 +210,32 @@ public abstract class AbstractMessageChannelBinder<C extends ConsumerProperties,
return (MessageSourceCustomizer<S>) this.sourceCustomizer;
}
private String resolveBinderName(String bindingName, BindingServiceProperties bindingServiceProperties) {
String binder = bindingServiceProperties == null ? null : bindingServiceProperties.getBindings().get(bindingName).getBinder();
if (!StringUtils.hasText(binder)) {
return resolveFromDefaultBinder();
}
return binder;
}
private String resolveFromDefaultBinder() {
DefaultBinderTypeRegistry binderTypeRegistry =
AbstractMessageChannelBinder.this.getApplicationContext().getBean(DefaultBinderTypeRegistry.class);
Map<String, BinderType> binderTypes = binderTypeRegistry.getAll();
Assert.isTrue(binderTypes.entrySet().size() == 1, "More than one binder types found, but no binder specified on the binding");
return binderTypes.keySet().iterator().next();
}
private String resolveBinderType(String bindingName, BindingServiceProperties bindingServiceProperties) {
String binder = bindingServiceProperties == null ? null : bindingServiceProperties.getBindings().get(bindingName).getBinder();
if (!StringUtils.hasText(binder)) {
return resolveFromDefaultBinder();
}
else {
return bindingServiceProperties.getBinders().get(binder).getType();
}
}
/**
* Binds an outbound channel to a given destination. The implementation delegates to
* {@link ProvisioningProvider#provisionProducerDestination(String, ProducerProperties)}
@@ -290,12 +316,12 @@ public abstract class AbstractMessageChannelBinder<C extends ConsumerProperties,
@Override
public String getBinderName() {
return bsp == null ? null : bsp.getBinder(destination);
return resolveBinderName(getBindingName(), bsp);
}
@Override
public String getBinderType() {
return bsp == null ? null : bsp.getBinderType(this.getBinderName());
return resolveBinderType(getBindingName(), bsp);
}
@Override
@@ -469,12 +495,12 @@ public abstract class AbstractMessageChannelBinder<C extends ConsumerProperties,
@Override
public String getBinderName() {
return bsp == null ? null : bsp.getBinder(name);
return resolveBinderName(getBindingName(), bsp);
}
@Override
public String getBinderType() {
return bsp == null ? null : bsp.getBinderType(this.getBinderName());
return resolveBinderType(getBindingName(), bsp);
}
@Override
@@ -568,12 +594,12 @@ public abstract class AbstractMessageChannelBinder<C extends ConsumerProperties,
@Override
public String getBinderName() {
return bsp == null ? null : bsp.getBinder(name);
return resolveBinderName(getBindingName(), bsp);
}
@Override
public String getBinderType() {
return bsp == null ? null : bsp.getBinderType(this.getBinderName());
return resolveBinderType(getBindingName(), bsp);
}
@Override