From 203c8dbcea63c126121960f8903f953cf03c71d1 Mon Sep 17 00:00:00 2001 From: Gary Russell Date: Fri, 10 Nov 2017 09:56:49 -0500 Subject: [PATCH] SCST-GH-1009: Producer properties dynamic bindings Resolves https://github.com/spring-cloud/spring-cloud-stream/issues/1009 --- .../RabbitExtendedBindingProperties.java | 39 +++++++++++++++---- 1 file changed, 31 insertions(+), 8 deletions(-) diff --git a/spring-cloud-stream-binder-rabbit-core/src/main/java/org/springframework/cloud/stream/binder/rabbit/properties/RabbitExtendedBindingProperties.java b/spring-cloud-stream-binder-rabbit-core/src/main/java/org/springframework/cloud/stream/binder/rabbit/properties/RabbitExtendedBindingProperties.java index 1c008bb14..3d122de35 100644 --- a/spring-cloud-stream-binder-rabbit-core/src/main/java/org/springframework/cloud/stream/binder/rabbit/properties/RabbitExtendedBindingProperties.java +++ b/spring-cloud-stream-binder-rabbit-core/src/main/java/org/springframework/cloud/stream/binder/rabbit/properties/RabbitExtendedBindingProperties.java @@ -39,22 +39,45 @@ public class RabbitExtendedBindingProperties implements ExtendedBindingPropertie } @Override - public RabbitConsumerProperties getExtendedConsumerProperties(String channelName) { - if (bindings.containsKey(channelName) && bindings.get(channelName).getConsumer() != null) { - return bindings.get(channelName).getConsumer(); + public synchronized RabbitConsumerProperties getExtendedConsumerProperties(String channelName) { + if (bindings.containsKey(channelName)) { + if (bindings.get(channelName).getConsumer() != null) { + return bindings.get(channelName).getConsumer(); + } + else { + RabbitConsumerProperties properties = new RabbitConsumerProperties(); + this.bindings.get(channelName).setConsumer(properties); + return properties; + } } else { - return new RabbitConsumerProperties(); + RabbitConsumerProperties properties = new RabbitConsumerProperties(); + RabbitBindingProperties rbp = new RabbitBindingProperties(); + rbp.setConsumer(properties); + bindings.put(channelName, rbp); + return properties; } } @Override - public RabbitProducerProperties getExtendedProducerProperties(String channelName) { - if (bindings.containsKey(channelName) && bindings.get(channelName).getProducer() != null) { - return bindings.get(channelName).getProducer(); + public synchronized RabbitProducerProperties getExtendedProducerProperties(String channelName) { + if (bindings.containsKey(channelName)) { + if (bindings.get(channelName).getProducer() != null) { + return bindings.get(channelName).getProducer(); + } + else { + RabbitProducerProperties properties = new RabbitProducerProperties(); + this.bindings.get(channelName).setProducer(properties); + return properties; + } } else { - return new RabbitProducerProperties(); + RabbitProducerProperties properties = new RabbitProducerProperties(); + RabbitBindingProperties rbp = new RabbitBindingProperties(); + rbp.setProducer(properties); + bindings.put(channelName, rbp); + return properties; } } + }