You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by GitBox <gi...@apache.org> on 2018/02/27 16:33:29 UTC

[GitHub] merlimat closed pull request #1283: Add prefix setting for C++/Python reader

merlimat closed pull request #1283: Add prefix setting for C++/Python reader
URL: https://github.com/apache/incubator-pulsar/pull/1283
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git a/pulsar-client-cpp/include/pulsar/ReaderConfiguration.h b/pulsar-client-cpp/include/pulsar/ReaderConfiguration.h
index 7e476280d..3102cf57a 100644
--- a/pulsar-client-cpp/include/pulsar/ReaderConfiguration.h
+++ b/pulsar-client-cpp/include/pulsar/ReaderConfiguration.h
@@ -83,6 +83,9 @@ class ReaderConfiguration {
     void setReaderName(const std::string& readerName);
     const std::string& getReaderName() const;
 
+    void setSubscriptionRolePrefix(const std::string& subscriptionRolePrefix);
+    const std::string& getSubscriptionRolePrefix() const;
+
    private:
     boost::shared_ptr<ReaderConfigurationImpl> impl_;
 };
diff --git a/pulsar-client-cpp/lib/ReaderConfiguration.cc b/pulsar-client-cpp/lib/ReaderConfiguration.cc
index 984c8ccc4..e44714fc0 100644
--- a/pulsar-client-cpp/lib/ReaderConfiguration.cc
+++ b/pulsar-client-cpp/lib/ReaderConfiguration.cc
@@ -48,4 +48,12 @@ int ReaderConfiguration::getReceiverQueueSize() const { return impl_->receiverQu
 const std::string& ReaderConfiguration::getReaderName() const { return impl_->readerName; }
 
 void ReaderConfiguration::setReaderName(const std::string& readerName) { impl_->readerName = readerName; }
+
+const std::string& ReaderConfiguration::getSubscriptionRolePrefix() const {
+    return impl_->subscriptionRolePrefix;
+}
+
+void ReaderConfiguration::setSubscriptionRolePrefix(const std::string& subscriptionRolePrefix) {
+    impl_->subscriptionRolePrefix = subscriptionRolePrefix;
+}
 }  // namespace pulsar
diff --git a/pulsar-client-cpp/lib/ReaderConfigurationImpl.h b/pulsar-client-cpp/lib/ReaderConfigurationImpl.h
index bfcf6f081..67ddb3fe5 100644
--- a/pulsar-client-cpp/lib/ReaderConfigurationImpl.h
+++ b/pulsar-client-cpp/lib/ReaderConfigurationImpl.h
@@ -28,7 +28,9 @@ struct ReaderConfigurationImpl {
     bool hasReaderListener;
     int receiverQueueSize;
     std::string readerName;
-    ReaderConfigurationImpl() : hasReaderListener(false), receiverQueueSize(1000), readerName() {}
+    std::string subscriptionRolePrefix;
+    ReaderConfigurationImpl()
+        : hasReaderListener(false), receiverQueueSize(1000), readerName(), subscriptionRolePrefix() {}
 };
 }  // namespace pulsar
 #endif /* LIB_READERCONFIGURATIONIMPL_H_ */
diff --git a/pulsar-client-cpp/lib/ReaderImpl.cc b/pulsar-client-cpp/lib/ReaderImpl.cc
index 4feb45303..308908ddb 100644
--- a/pulsar-client-cpp/lib/ReaderImpl.cc
+++ b/pulsar-client-cpp/lib/ReaderImpl.cc
@@ -45,6 +45,9 @@ void ReaderImpl::start(const BatchMessageId& startMessageId) {
     }
 
     std::string subscription = "reader-" + generateRandomName();
+    if (!readerConf_.getSubscriptionRolePrefix().empty()) {
+        subscription = readerConf_.getSubscriptionRolePrefix() + "-" + subscription;
+    }
 
     consumer_ = boost::make_shared<ConsumerImpl>(
         client_.lock(), topic_, subscription, consumerConf, ExecutorServicePtr(), NonPartitioned,
diff --git a/pulsar-client-cpp/python/pulsar.py b/pulsar-client-cpp/python/pulsar.py
index 060e61150..045a9a316 100644
--- a/pulsar-client-cpp/python/pulsar.py
+++ b/pulsar-client-cpp/python/pulsar.py
@@ -432,7 +432,8 @@ def my_listener(consumer, message):
     def create_reader(self, topic, start_message_id,
                       reader_listener=None,
                       receiver_queue_size=1000,
-                      reader_name=None
+                      reader_name=None,
+                      subscription_role_prefix=None
                       ):
         """
         Create a reader on a particular topic
@@ -476,11 +477,14 @@ def my_listener(reader, message):
           memory utilization.
         * `reader_name`:
           Sets the reader name.
+        * `subscription_role_prefix`:
+          Sets the subscription role prefix.
         """
         _check_type(str, topic, 'topic')
         _check_type(_pulsar.MessageId, start_message_id, 'start_message_id')
         _check_type(int, receiver_queue_size, 'receiver_queue_size')
         _check_type_or_none(str, reader_name, 'reader_name')
+        _check_type_or_none(str, subscription_role_prefix, 'subscription_role_prefix')
 
         conf = _pulsar.ReaderConfiguration()
         if reader_listener:
@@ -488,6 +492,8 @@ def my_listener(reader, message):
         conf.receiver_queue_size(receiver_queue_size)
         if reader_name:
             conf.reader_name(reader_name)
+        if subscription_role_prefix:
+            conf.subscription_role_prefix(subscription_role_prefix)
         c = Reader()
         c._reader = self._client.create_reader(topic, start_message_id, conf)
         c._client = self
diff --git a/pulsar-client-cpp/python/src/config.cc b/pulsar-client-cpp/python/src/config.cc
index 7eceba657..f03c88373 100644
--- a/pulsar-client-cpp/python/src/config.cc
+++ b/pulsar-client-cpp/python/src/config.cc
@@ -142,5 +142,7 @@ void export_config() {
             .def("receiver_queue_size", &ReaderConfiguration::setReceiverQueueSize)
             .def("reader_name", &ReaderConfiguration::getReaderName, return_value_policy<copy_const_reference>())
             .def("reader_name", &ReaderConfiguration::setReaderName)
+            .def("subscription_role_prefix", &ReaderConfiguration::getSubscriptionRolePrefix, return_value_policy<copy_const_reference>())
+            .def("subscription_role_prefix", &ReaderConfiguration::setSubscriptionRolePrefix)
             ;
 }


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services