pulsar-client-cpp
ProducerConfiguration.h
1 
19 #ifndef PULSAR_PRODUCERCONFIGURATION_H_
20 #define PULSAR_PRODUCERCONFIGURATION_H_
21 #include <pulsar/CompressionType.h>
22 #include <pulsar/CryptoKeyReader.h>
23 #include <pulsar/Message.h>
24 #include <pulsar/MessageRoutingPolicy.h>
25 #include <pulsar/ProducerCryptoFailureAction.h>
26 #include <pulsar/ProducerInterceptor.h>
27 #include <pulsar/Result.h>
28 #include <pulsar/Schema.h>
29 #include <pulsar/defines.h>
30 
31 #include <functional>
32 #include <set>
33 
34 namespace pulsar {
35 
36 typedef std::function<void(Result, const MessageId& messageId)> SendCallback;
37 typedef std::function<void(Result)> CloseCallback;
38 
39 struct ProducerConfigurationImpl;
40 class PulsarWrapper;
41 
45 class PULSAR_PUBLIC ProducerConfiguration {
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  };
60  {
71 
81  KeyBasedBatching
82  };
84  {
88  Shared = 0,
89 
93  Exclusive = 1,
94 
98  WaitForExclusive = 2,
99 
104  ExclusiveWithFencing = 3
105  };
106 
110  ProducerConfiguration& operator=(const ProducerConfiguration&);
111 
118  ProducerConfiguration& setProducerName(const std::string& producerName);
119 
123  const std::string& getProducerName() const;
124 
137  ProducerConfiguration& setSchema(const SchemaInfo& schemaInfo);
138 
142  const SchemaInfo& getSchema() const;
143 
147  ProducerConfiguration& setSendTimeout(int sendTimeoutMs);
148 
159  int getSendTimeout() const;
160 
172  ProducerConfiguration& setInitialSequenceId(int64_t initialSequenceId);
173 
177  int64_t getInitialSequenceId() const;
178 
194  ProducerConfiguration& setCompressionType(CompressionType compressionType);
195 
199  CompressionType getCompressionType() const;
200 
212  ProducerConfiguration& setMaxPendingMessages(int maxPendingMessages);
213 
217  int getMaxPendingMessages() const;
218 
229  ProducerConfiguration& setMaxPendingMessagesAcrossPartitions(int maxPendingMessagesAcrossPartitions);
230 
234  int getMaxPendingMessagesAcrossPartitions() const;
235 
244  ProducerConfiguration& setPartitionsRoutingMode(const PartitionsRoutingMode& mode);
245 
249  PartitionsRoutingMode getPartitionsRoutingMode() const;
250 
257  ProducerConfiguration& setMessageRouter(const MessageRoutingPolicyPtr& router);
258 
262  const MessageRoutingPolicyPtr& getMessageRouterPtr() const;
263 
282  ProducerConfiguration& setHashingScheme(const HashingScheme& scheme);
283 
287  HashingScheme getHashingScheme() const;
288 
303  ProducerConfiguration& setLazyStartPartitionedProducers(bool);
304 
308  bool getLazyStartPartitionedProducers() const;
309 
313  ProducerConfiguration& setBlockIfQueueFull(bool);
314 
319  bool getBlockIfQueueFull() const;
320 
321  // Zero queue size feature will not be supported on consumer end if batching is enabled
322 
338  ProducerConfiguration& setBatchingEnabled(const bool& batchingEnabled);
339 
347  const bool& getBatchingEnabled() const;
348 
360  ProducerConfiguration& setBatchingMaxMessages(const unsigned int& batchingMaxMessages);
361 
365  const unsigned int& getBatchingMaxMessages() const;
366 
379  ProducerConfiguration& setBatchingMaxAllowedSizeInBytes(
380  const unsigned long& batchingMaxAllowedSizeInBytes);
381 
385  const unsigned long& getBatchingMaxAllowedSizeInBytes() const;
386 
394  ProducerConfiguration& setBatchingMaxPublishDelayMs(const unsigned long& batchingMaxPublishDelayMs);
395 
399  const unsigned long& getBatchingMaxPublishDelayMs() const;
400 
406  ProducerConfiguration& setBatchingType(BatchingType batchingType);
407 
412  BatchingType getBatchingType() const;
413 
417  const CryptoKeyReaderPtr getCryptoKeyReader() const;
418 
425  ProducerConfiguration& setCryptoKeyReader(CryptoKeyReaderPtr cryptoKeyReader);
426 
430  ProducerCryptoFailureAction getCryptoFailureAction() const;
431 
439  ProducerConfiguration& setCryptoFailureAction(ProducerCryptoFailureAction action);
440 
444  const std::set<std::string>& getEncryptionKeys() const;
445 
449  bool isEncryptionEnabled() const;
450 
463  ProducerConfiguration& addEncryptionKey(std::string key);
464 
472  bool hasProperty(const std::string& name) const;
473 
480  const std::string& getProperty(const std::string& name) const;
481 
485  std::map<std::string, std::string>& getProperties() const;
486 
493  ProducerConfiguration& setProperty(const std::string& name, const std::string& value);
494 
498  ProducerConfiguration& setProperties(const std::map<std::string, std::string>& properties);
499 
521  ProducerConfiguration& setChunkingEnabled(bool chunkingEnabled);
522 
526  bool isChunkingEnabled() const;
527 
535  ProducerConfiguration& setAccessMode(const ProducerAccessMode& accessMode);
536 
540  ProducerAccessMode getAccessMode() const;
541 
542  ProducerConfiguration& intercept(const std::vector<ProducerInterceptorPtr>& interceptors);
543 
544  const std::vector<ProducerInterceptorPtr>& getInterceptors() const;
545 
546  private:
547  std::shared_ptr<ProducerConfigurationImpl> impl_;
548 
549  friend class PulsarWrapper;
550  friend class ConsumerImpl;
551  friend class ProducerImpl;
552 };
553 } // namespace pulsar
554 #endif /* PULSAR_PRODUCERCONFIGURATION_H_ */
pulsar::Result
Result
Definition: Result.h:31
pulsar::ProducerConfiguration::DefaultBatching
@ DefaultBatching
Definition: ProducerConfiguration.h:70
pulsar::ProducerConfiguration::BatchingType
BatchingType
Definition: ProducerConfiguration.h:59
pulsar::ProducerConfiguration::ProducerAccessMode
ProducerAccessMode
Definition: ProducerConfiguration.h:83
pulsar::SchemaInfo
Definition: Schema.h:146
pulsar::ProducerConfiguration
Definition: ProducerConfiguration.h:45
pulsar
Definition: Authentication.h:31