pulsar-client-cpp
Loading...
Searching...
No Matches
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 <cstdint>
32#include <functional>
33#include <set>
34
35namespace pulsar {
36
37typedef std::function<void(Result, const MessageId& messageId)> SendCallback;
38typedef std::function<void(Result)> CloseCallback;
39
40struct ProducerConfigurationImpl;
41class PulsarWrapper;
42
46class PULSAR_PUBLIC ProducerConfiguration {
47 public:
48 enum PartitionsRoutingMode : uint8_t
49 {
50 UseSinglePartition,
51 RoundRobinDistribution,
52 CustomPartition
53 };
54 enum HashingScheme : uint8_t
55 {
56 Murmur3_32Hash,
57 BoostHash,
58 JavaStringHash
59 };
60 enum BatchingType : uint8_t
61 {
72
82 KeyBasedBatching
83 };
84 enum ProducerAccessMode : uint8_t
85 {
89 Shared = 0,
90
94 Exclusive = 1,
95
99 WaitForExclusive = 2,
100
105 ExclusiveWithFencing = 3
106 };
107
112
119 ProducerConfiguration& setProducerName(const std::string& producerName);
120
124 const std::string& getProducerName() const;
125
139
143 const SchemaInfo& getSchema() const;
144
149
160 int getSendTimeout() const;
161
173 ProducerConfiguration& setInitialSequenceId(int64_t initialSequenceId);
174
178 int64_t getInitialSequenceId() const;
179
195 ProducerConfiguration& setCompressionType(CompressionType compressionType);
196
200 CompressionType getCompressionType() const;
201
214
219
230 ProducerConfiguration& setMaxPendingMessagesAcrossPartitions(int maxPendingMessagesAcrossPartitions);
231
236
245 ProducerConfiguration& setPartitionsRoutingMode(const PartitionsRoutingMode& mode);
246
250 PartitionsRoutingMode getPartitionsRoutingMode() const;
251
258 ProducerConfiguration& setMessageRouter(const MessageRoutingPolicyPtr& router);
259
263 const MessageRoutingPolicyPtr& getMessageRouterPtr() const;
264
283 ProducerConfiguration& setHashingScheme(const HashingScheme& scheme);
284
288 HashingScheme getHashingScheme() const;
289
305
310
315
321
322 // Zero queue size feature will not be supported on consumer end if batching is enabled
323
339 ProducerConfiguration& setBatchingEnabled(const bool& batchingEnabled);
340
348 const bool& getBatchingEnabled() const;
349
361 ProducerConfiguration& setBatchingMaxMessages(const unsigned int& batchingMaxMessages);
362
366 const unsigned int& getBatchingMaxMessages() const;
367
381 const unsigned long& batchingMaxAllowedSizeInBytes);
382
386 const unsigned long& getBatchingMaxAllowedSizeInBytes() const;
387
395 ProducerConfiguration& setBatchingMaxPublishDelayMs(const unsigned long& batchingMaxPublishDelayMs);
396
400 const unsigned long& getBatchingMaxPublishDelayMs() const;
401
408
414
418 const CryptoKeyReaderPtr getCryptoKeyReader() const;
419
426 ProducerConfiguration& setCryptoKeyReader(CryptoKeyReaderPtr cryptoKeyReader);
427
431 ProducerCryptoFailureAction getCryptoFailureAction() const;
432
440 ProducerConfiguration& setCryptoFailureAction(ProducerCryptoFailureAction action);
441
445 const std::set<std::string>& getEncryptionKeys() const;
446
451
464 ProducerConfiguration& addEncryptionKey(const std::string& key);
465
473 bool hasProperty(const std::string& name) const;
474
481 const std::string& getProperty(const std::string& name) const;
482
486 std::map<std::string, std::string>& getProperties() const;
487
494 ProducerConfiguration& setProperty(const std::string& name, const std::string& value);
495
499 ProducerConfiguration& setProperties(const std::map<std::string, std::string>& properties);
500
523
527 bool isChunkingEnabled() const;
528
537
542
543 ProducerConfiguration& intercept(const std::vector<ProducerInterceptorPtr>& interceptors);
544
545 const std::vector<ProducerInterceptorPtr>& getInterceptors() const;
546
547 private:
548 std::shared_ptr<ProducerConfigurationImpl> impl_;
549
550 friend class PulsarWrapper;
551 friend class ConsumerImpl;
552 friend class ProducerImpl;
553};
554} // namespace pulsar
555#endif /* PULSAR_PRODUCERCONFIGURATION_H_ */
Definition ProducerConfiguration.h:46
const std::string & getProperty(const std::string &name) const
const SchemaInfo & getSchema() const
ProducerConfiguration & setBatchingMaxMessages(const unsigned int &batchingMaxMessages)
ProducerConfiguration & setSendTimeout(int sendTimeoutMs)
ProducerConfiguration & setAccessMode(const ProducerAccessMode &accessMode)
const unsigned int & getBatchingMaxMessages() const
ProducerConfiguration & setBatchingMaxPublishDelayMs(const unsigned long &batchingMaxPublishDelayMs)
ProducerConfiguration & setCompressionType(CompressionType compressionType)
std::map< std::string, std::string > & getProperties() const
const CryptoKeyReaderPtr getCryptoKeyReader() const
ProducerConfiguration & setProperties(const std::map< std::string, std::string > &properties)
BatchingType
Definition ProducerConfiguration.h:61
@ DefaultBatching
Definition ProducerConfiguration.h:71
ProducerAccessMode getAccessMode() const
const std::string & getProducerName() const
ProducerConfiguration & setHashingScheme(const HashingScheme &scheme)
const std::set< std::string > & getEncryptionKeys() const
CompressionType getCompressionType() const
ProducerConfiguration & setPartitionsRoutingMode(const PartitionsRoutingMode &mode)
ProducerConfiguration & setCryptoKeyReader(CryptoKeyReaderPtr cryptoKeyReader)
const unsigned long & getBatchingMaxAllowedSizeInBytes() const
bool hasProperty(const std::string &name) const
const MessageRoutingPolicyPtr & getMessageRouterPtr() const
ProducerConfiguration & setProducerName(const std::string &producerName)
ProducerCryptoFailureAction getCryptoFailureAction() const
ProducerConfiguration & setInitialSequenceId(int64_t initialSequenceId)
BatchingType getBatchingType() const
int64_t getInitialSequenceId() const
ProducerConfiguration & setProperty(const std::string &name, const std::string &value)
int getMaxPendingMessagesAcrossPartitions() const
ProducerConfiguration & setBatchingMaxAllowedSizeInBytes(const unsigned long &batchingMaxAllowedSizeInBytes)
HashingScheme getHashingScheme() const
ProducerConfiguration & setBatchingType(BatchingType batchingType)
ProducerConfiguration & setMessageRouter(const MessageRoutingPolicyPtr &router)
ProducerConfiguration & setMaxPendingMessagesAcrossPartitions(int maxPendingMessagesAcrossPartitions)
ProducerConfiguration & setCryptoFailureAction(ProducerCryptoFailureAction action)
bool getLazyStartPartitionedProducers() const
const unsigned long & getBatchingMaxPublishDelayMs() const
ProducerConfiguration & setChunkingEnabled(bool chunkingEnabled)
ProducerAccessMode
Definition ProducerConfiguration.h:85
const bool & getBatchingEnabled() const
ProducerConfiguration & setBlockIfQueueFull(bool)
PartitionsRoutingMode getPartitionsRoutingMode() const
ProducerConfiguration & addEncryptionKey(const std::string &key)
ProducerConfiguration & setMaxPendingMessages(int maxPendingMessages)
ProducerConfiguration & setLazyStartPartitionedProducers(bool)
ProducerConfiguration & setSchema(const SchemaInfo &schemaInfo)
ProducerConfiguration & setBatchingEnabled(const bool &batchingEnabled)
Definition Schema.h:147
Definition Authentication.h:31
Result
Definition Result.h:33