pulsar-client-cpp
Loading...
Searching...
No Matches
producer_configuration.h
1
20#pragma once
21
22#include <stdint.h>
23
24#include <pulsar/defines.h>
25#include <pulsar/c/message_router.h>
26
27#ifdef __cplusplus
28extern "C" {
29#endif
30
31typedef enum
32{
33 pulsar_UseSinglePartition,
34 pulsar_RoundRobinDistribution,
35 pulsar_CustomPartition
36} pulsar_partitions_routing_mode;
37
38typedef enum
39{
40 pulsar_Murmur3_32Hash,
41 pulsar_BoostHash,
42 pulsar_JavaStringHash
43} pulsar_hashing_scheme;
44
45typedef enum
46{
47 pulsar_CompressionNone = 0,
48 pulsar_CompressionLZ4 = 1,
49 pulsar_CompressionZLib = 2,
50 pulsar_CompressionZSTD = 3,
51 pulsar_CompressionSNAPPY = 4
52} pulsar_compression_type;
53
54typedef enum
55{
56 pulsar_None = 0,
57 pulsar_String = 1,
58 pulsar_Json = 2,
59 pulsar_Protobuf = 3,
60 pulsar_Avro = 4,
61 pulsar_Boolean = 5,
62 pulsar_Int8 = 6,
63 pulsar_Int16 = 7,
64 pulsar_Int32 = 8,
65 pulsar_Int64 = 9,
66 pulsar_Float32 = 10,
67 pulsar_Float64 = 11,
68 pulsar_KeyValue = 15,
69 pulsar_Bytes = -1,
70 pulsar_AutoConsume = -3,
71 pulsar_AutoPublish = -4,
72} pulsar_schema_type;
73
74typedef enum
75{
76 // This is the default option to fail send if crypto operation fails
77 pulsar_ProducerFail,
78 // Ignore crypto failure and proceed with sending unencrypted messages
79 pulsar_ProducerSend
80} pulsar_producer_crypto_failure_action;
81
82typedef struct _pulsar_producer_configuration pulsar_producer_configuration_t;
83
84typedef struct _pulsar_crypto_key_reader pulsar_crypto_key_reader;
85
86PULSAR_PUBLIC pulsar_producer_configuration_t *pulsar_producer_configuration_create();
87
88PULSAR_PUBLIC void pulsar_producer_configuration_free(pulsar_producer_configuration_t *conf);
89
90PULSAR_PUBLIC void pulsar_producer_configuration_set_producer_name(pulsar_producer_configuration_t *conf,
91 const char *producerName);
92
93PULSAR_PUBLIC const char *pulsar_producer_configuration_get_producer_name(
94 pulsar_producer_configuration_t *conf);
95
96PULSAR_PUBLIC void pulsar_producer_configuration_set_send_timeout(pulsar_producer_configuration_t *conf,
97 int sendTimeoutMs);
98
99PULSAR_PUBLIC int pulsar_producer_configuration_get_send_timeout(pulsar_producer_configuration_t *conf);
100
101PULSAR_PUBLIC void pulsar_producer_configuration_set_initial_sequence_id(
102 pulsar_producer_configuration_t *conf, int64_t initialSequenceId);
103
104PULSAR_PUBLIC int64_t
105pulsar_producer_configuration_get_initial_sequence_id(pulsar_producer_configuration_t *conf);
106
107PULSAR_PUBLIC void pulsar_producer_configuration_set_compression_type(
108 pulsar_producer_configuration_t *conf, pulsar_compression_type compressionType);
109
110PULSAR_PUBLIC pulsar_compression_type
111pulsar_producer_configuration_get_compression_type(pulsar_producer_configuration_t *conf);
112
113PULSAR_PUBLIC void pulsar_producer_configuration_set_schema_info(pulsar_producer_configuration_t *conf,
114 pulsar_schema_type schemaType,
115 const char *name, const char *schema,
116 pulsar_string_map_t *properties);
117
118PULSAR_PUBLIC void pulsar_producer_configuration_set_max_pending_messages(
119 pulsar_producer_configuration_t *conf, int maxPendingMessages);
120PULSAR_PUBLIC int pulsar_producer_configuration_get_max_pending_messages(
121 pulsar_producer_configuration_t *conf);
122
131PULSAR_PUBLIC void pulsar_producer_configuration_set_max_pending_messages_across_partitions(
132 pulsar_producer_configuration_t *conf, int maxPendingMessagesAcrossPartitions);
133
138PULSAR_PUBLIC int pulsar_producer_configuration_get_max_pending_messages_across_partitions(
139 pulsar_producer_configuration_t *conf);
140
141PULSAR_PUBLIC void pulsar_producer_configuration_set_partitions_routing_mode(
142 pulsar_producer_configuration_t *conf, pulsar_partitions_routing_mode mode);
143
144PULSAR_PUBLIC pulsar_partitions_routing_mode
145pulsar_producer_configuration_get_partitions_routing_mode(pulsar_producer_configuration_t *conf);
146
147PULSAR_PUBLIC void pulsar_producer_configuration_set_message_router(pulsar_producer_configuration_t *conf,
148 pulsar_message_router router, void *ctx);
149
150PULSAR_PUBLIC void pulsar_producer_configuration_set_hashing_scheme(pulsar_producer_configuration_t *conf,
151 pulsar_hashing_scheme scheme);
152
153PULSAR_PUBLIC pulsar_hashing_scheme
154pulsar_producer_configuration_get_hashing_scheme(pulsar_producer_configuration_t *conf);
155
156PULSAR_PUBLIC void pulsar_producer_configuration_set_lazy_start_partitioned_producers(
157 pulsar_producer_configuration_t *conf, int useLazyStartPartitionedProducers);
158
159PULSAR_PUBLIC int pulsar_producer_configuration_get_lazy_start_partitioned_producers(
160 pulsar_producer_configuration_t *conf);
161
162PULSAR_PUBLIC void pulsar_producer_configuration_set_block_if_queue_full(
163 pulsar_producer_configuration_t *conf, int blockIfQueueFull);
164
165PULSAR_PUBLIC int pulsar_producer_configuration_get_block_if_queue_full(
166 pulsar_producer_configuration_t *conf);
167
168// Zero queue size feature will not be supported on consumer end if batching is enabled
169PULSAR_PUBLIC void pulsar_producer_configuration_set_batching_enabled(pulsar_producer_configuration_t *conf,
170 int batchingEnabled);
171
172PULSAR_PUBLIC int pulsar_producer_configuration_get_batching_enabled(pulsar_producer_configuration_t *conf);
173
174PULSAR_PUBLIC void pulsar_producer_configuration_set_batching_max_messages(
175 pulsar_producer_configuration_t *conf, unsigned int batchingMaxMessages);
176
177PULSAR_PUBLIC unsigned int pulsar_producer_configuration_get_batching_max_messages(
178 pulsar_producer_configuration_t *conf);
179
180PULSAR_PUBLIC void pulsar_producer_configuration_set_batching_max_allowed_size_in_bytes(
181 pulsar_producer_configuration_t *conf, unsigned long batchingMaxAllowedSizeInBytes);
182
183PULSAR_PUBLIC unsigned long pulsar_producer_configuration_get_batching_max_allowed_size_in_bytes(
184 pulsar_producer_configuration_t *conf);
185
186PULSAR_PUBLIC void pulsar_producer_configuration_set_batching_max_publish_delay_ms(
187 pulsar_producer_configuration_t *conf, unsigned long batchingMaxPublishDelayMs);
188
189PULSAR_PUBLIC unsigned long pulsar_producer_configuration_get_batching_max_publish_delay_ms(
190 pulsar_producer_configuration_t *conf);
191
192PULSAR_PUBLIC void pulsar_producer_configuration_set_property(pulsar_producer_configuration_t *conf,
193 const char *name, const char *value);
194
195PULSAR_PUBLIC int pulsar_producer_is_encryption_enabled(pulsar_producer_configuration_t *conf);
196
197PULSAR_PUBLIC void pulsar_producer_configuration_set_default_crypto_key_reader(
198 pulsar_producer_configuration_t *conf, const char *public_key_path, const char *private_key_path);
199
200PULSAR_PUBLIC pulsar_producer_crypto_failure_action
201pulsar_producer_configuration_get_crypto_failure_action(pulsar_producer_configuration_t *conf);
202
203PULSAR_PUBLIC void pulsar_producer_configuration_set_crypto_failure_action(
204 pulsar_producer_configuration_t *conf, pulsar_producer_crypto_failure_action cryptoFailureAction);
205
206PULSAR_PUBLIC void pulsar_producer_configuration_set_encryption_key(pulsar_producer_configuration_t *conf,
207 const char *key);
208
209PULSAR_PUBLIC void pulsar_producer_configuration_set_chunking_enabled(pulsar_producer_configuration_t *conf,
210 int chunkingEnabled);
211
212PULSAR_PUBLIC int pulsar_producer_configuration_is_chunking_enabled(pulsar_producer_configuration_t *conf);
213
214// const CryptoKeyReaderPtr getCryptoKeyReader() const;
215// ProducerConfiguration &setCryptoKeyReader(CryptoKeyReaderPtr cryptoKeyReader);
216//
217// ProducerCryptoFailureAction getCryptoFailureAction() const;
218// ProducerConfiguration &setCryptoFailureAction(ProducerCryptoFailureAction action);
219//
220// std::set <std::string> &getEncryptionKeys();
221// int isEncryptionEnabled() const;
222// ProducerConfiguration &addEncryptionKey(std::string key);
223
224#ifdef __cplusplus
225}
226#endif