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