scsm-88: Support Dynamic Binding Channel Limits

Required by scsm-88.

If `dynamicDestinations` is not zero length, only dynamically bind if
the channel is is in the list.

Polishing - Test Support for Dynamic Bindings
This commit is contained in:
Gary Russell
2015-12-21 18:13:25 -05:00
committed by Marius Bogoevici
parent 31961ae595
commit 16e7893e49
6 changed files with 134 additions and 25 deletions

View File

@@ -20,6 +20,8 @@ import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.LinkedBlockingDeque;
import org.springframework.cloud.stream.binder.Binder;
@@ -47,6 +49,7 @@ public class TestSupportBinder implements Binder<MessageChannel> {
private final MessageCollectorImpl messageCollector = new MessageCollectorImpl();
private final ConcurrentMap<String, MessageChannel> messageChannels = new ConcurrentHashMap<>();
@Override
public Binding<MessageChannel> bindConsumer(String name, String group, MessageChannel inboundBindTarget, Properties properties) {
@@ -65,19 +68,25 @@ public class TestSupportBinder implements Binder<MessageChannel> {
queue.add(message);
}
});
this.messageChannels.put(name, outboundBindTarget);
return null;
}
@Override
public void unbind(Binding<MessageChannel> binding) {
if (Binding.Type.producer.equals(binding.getType()))
messageCollector.unregister(binding.getTarget());
if (Binding.Type.producer.equals(binding.getType())) {
messageCollector.unregister(binding.getTarget());
}
}
public MessageCollector messageCollector() {
return messageCollector;
}
public MessageChannel getChannelForName(String name) {
return this.messageChannels.get(name);
}
/**
* Maintains mappings between channels and queues.
*