pulsar-client-cpp
ProducerConfiguration.h
1 
19 #ifndef PULSAR_PRODUCERCONFIGURATION_H_
20 #define PULSAR_PRODUCERCONFIGURATION_H_
21 #include <pulsar/CompressionType.h>
22 #include <pulsar/MessageRoutingPolicy.h>
23 #include <pulsar/Result.h>
24 #include <pulsar/Message.h>
25 #include <functional>
26 #include <pulsar/ProducerCryptoFailureAction.h>
27 #include <pulsar/CryptoKeyReader.h>
28 #include <pulsar/Schema.h>
29 
30 #include <set>
31 
32 #pragma GCC visibility push(default)
33 
34 namespace pulsar {
35 
36 typedef std::function<void(Result, const Message& msg)> SendCallback;
37 typedef std::function<void(Result)> CloseCallback;
38 
39 class ProducerConfigurationImpl;
40 class PulsarWrapper;
41 
46  public:
47  enum PartitionsRoutingMode
48  {
49  UseSinglePartition,
50  RoundRobinDistribution,
51  CustomPartition
52  };
53  enum HashingScheme
54  {
55  Murmur3_32Hash,
56  BoostHash,
57  JavaStringHash
58  };
59 
64 
65  ProducerConfiguration& setProducerName(const std::string& producerName);
66  const std::string& getProducerName() const;
67 
80  ProducerConfiguration& setSchema(const SchemaInfo& schemaInfo);
81 
85  const SchemaInfo& getSchema() const;
86 
87  ProducerConfiguration& setSendTimeout(int sendTimeoutMs);
88  int getSendTimeout() const;
89 
90  ProducerConfiguration& setInitialSequenceId(int64_t initialSequenceId);
91  int64_t getInitialSequenceId() const;
92 
106  ProducerConfiguration& setCompressionType(CompressionType compressionType);
107  CompressionType getCompressionType() const;
108 
109  ProducerConfiguration& setMaxPendingMessages(int maxPendingMessages);
110  int getMaxPendingMessages() const;
111 
120  ProducerConfiguration& setMaxPendingMessagesAcrossPartitions(int maxPendingMessagesAcrossPartitions);
121 
127 
128  ProducerConfiguration& setPartitionsRoutingMode(const PartitionsRoutingMode& mode);
129  PartitionsRoutingMode getPartitionsRoutingMode() const;
130 
131  ProducerConfiguration& setMessageRouter(const MessageRoutingPolicyPtr& router);
132  const MessageRoutingPolicyPtr& getMessageRouterPtr() const;
133 
134  ProducerConfiguration& setHashingScheme(const HashingScheme& scheme);
135  HashingScheme getHashingScheme() const;
136 
137  ProducerConfiguration& setBlockIfQueueFull(bool);
138  bool getBlockIfQueueFull() const;
139 
140  // Zero queue size feature will not be supported on consumer end if batching is enabled
141  ProducerConfiguration& setBatchingEnabled(const bool& batchingEnabled);
142  const bool& getBatchingEnabled() const;
143 
144  ProducerConfiguration& setBatchingMaxMessages(const unsigned int& batchingMaxMessages);
145  const unsigned int& getBatchingMaxMessages() const;
146 
147  ProducerConfiguration& setBatchingMaxAllowedSizeInBytes(
148  const unsigned long& batchingMaxAllowedSizeInBytes);
149  const unsigned long& getBatchingMaxAllowedSizeInBytes() const;
150 
151  ProducerConfiguration& setBatchingMaxPublishDelayMs(const unsigned long& batchingMaxPublishDelayMs);
152  const unsigned long& getBatchingMaxPublishDelayMs() const;
153 
154  const CryptoKeyReaderPtr getCryptoKeyReader() const;
155  ProducerConfiguration& setCryptoKeyReader(CryptoKeyReaderPtr cryptoKeyReader);
156 
157  ProducerCryptoFailureAction getCryptoFailureAction() const;
158  ProducerConfiguration& setCryptoFailureAction(ProducerCryptoFailureAction action);
159 
160  std::set<std::string>& getEncryptionKeys();
161  bool isEncryptionEnabled() const;
162  ProducerConfiguration& addEncryptionKey(std::string key);
163 
171  bool hasProperty(const std::string& name) const;
172 
179  const std::string& getProperty(const std::string& name) const;
180 
184  std::map<std::string, std::string>& getProperties() const;
185 
192  ProducerConfiguration& setProperty(const std::string& name, const std::string& value);
193 
197  ProducerConfiguration& setProperties(const std::map<std::string, std::string>& properties);
198 
199  friend class PulsarWrapper;
200 
201  private:
202  struct Impl;
203  std::shared_ptr<ProducerConfigurationImpl> impl_;
204 };
205 } // namespace pulsar
206 #pragma GCC visibility pop
207 #endif /* PULSAR_PRODUCERCONFIGURATION_H_ */
pulsar::ProducerConfiguration::getSchema
const SchemaInfo & getSchema() const
pulsar::ProducerConfiguration::setCompressionType
ProducerConfiguration & setCompressionType(CompressionType compressionType)
pulsar::ProducerConfiguration::getProperty
const std::string & getProperty(const std::string &name) const
pulsar::Result
Result
Definition: Result.h:31
pulsar::ProducerConfiguration::setProperty
ProducerConfiguration & setProperty(const std::string &name, const std::string &value)
pulsar::ProducerConfiguration::hasProperty
bool hasProperty(const std::string &name) const
pulsar::ProducerConfiguration::getProperties
std::map< std::string, std::string > & getProperties() const
pulsar::ProducerConfiguration::setProperties
ProducerConfiguration & setProperties(const std::map< std::string, std::string > &properties)
pulsar::ProducerConfiguration::setMaxPendingMessagesAcrossPartitions
ProducerConfiguration & setMaxPendingMessagesAcrossPartitions(int maxPendingMessagesAcrossPartitions)
pulsar::SchemaInfo
Definition: Schema.h:118
pulsar::ProducerConfiguration
Definition: ProducerConfiguration.h:45
pulsar
Definition: Authentication.h:31
pulsar::ProducerConfiguration::getMaxPendingMessagesAcrossPartitions
int getMaxPendingMessagesAcrossPartitions() const
pulsar::ProducerConfiguration::setSchema
ProducerConfiguration & setSchema(const SchemaInfo &schemaInfo)