24#include <pulsar/defines.h>
25#include <pulsar/c/message_router.h>
32 pulsar_UseSinglePartition,
33 pulsar_RoundRobinDistribution,
34 pulsar_CustomPartition
35} pulsar_partitions_routing_mode;
37typedef enum { pulsar_Murmur3_32Hash, pulsar_BoostHash, pulsar_JavaStringHash } pulsar_hashing_scheme;
40 pulsar_CompressionNone = 0,
41 pulsar_CompressionLZ4 = 1,
42 pulsar_CompressionZLib = 2,
43 pulsar_CompressionZSTD = 3,
44 pulsar_CompressionSNAPPY = 4
45} pulsar_compression_type;
62 pulsar_AutoConsume = -3,
63 pulsar_AutoPublish = -4,
71} pulsar_producer_crypto_failure_action;
73typedef struct _pulsar_producer_configuration pulsar_producer_configuration_t;
75typedef struct _pulsar_crypto_key_reader pulsar_crypto_key_reader;
77PULSAR_PUBLIC pulsar_producer_configuration_t *pulsar_producer_configuration_create();
79PULSAR_PUBLIC
void pulsar_producer_configuration_free(pulsar_producer_configuration_t *conf);
81PULSAR_PUBLIC
void pulsar_producer_configuration_set_producer_name(pulsar_producer_configuration_t *conf,
82 const char *producerName);
84PULSAR_PUBLIC
const char *pulsar_producer_configuration_get_producer_name(
85 pulsar_producer_configuration_t *conf);
87PULSAR_PUBLIC
void pulsar_producer_configuration_set_send_timeout(pulsar_producer_configuration_t *conf,
90PULSAR_PUBLIC
int pulsar_producer_configuration_get_send_timeout(pulsar_producer_configuration_t *conf);
92PULSAR_PUBLIC
void pulsar_producer_configuration_set_initial_sequence_id(
93 pulsar_producer_configuration_t *conf, int64_t initialSequenceId);
96pulsar_producer_configuration_get_initial_sequence_id(pulsar_producer_configuration_t *conf);
98PULSAR_PUBLIC
void pulsar_producer_configuration_set_compression_type(
99 pulsar_producer_configuration_t *conf, pulsar_compression_type compressionType);
101PULSAR_PUBLIC pulsar_compression_type
102pulsar_producer_configuration_get_compression_type(pulsar_producer_configuration_t *conf);
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);
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);
122PULSAR_PUBLIC
void pulsar_producer_configuration_set_max_pending_messages_across_partitions(
123 pulsar_producer_configuration_t *conf,
int maxPendingMessagesAcrossPartitions);
129PULSAR_PUBLIC
int pulsar_producer_configuration_get_max_pending_messages_across_partitions(
130 pulsar_producer_configuration_t *conf);
132PULSAR_PUBLIC
void pulsar_producer_configuration_set_partitions_routing_mode(
133 pulsar_producer_configuration_t *conf, pulsar_partitions_routing_mode mode);
135PULSAR_PUBLIC pulsar_partitions_routing_mode
136pulsar_producer_configuration_get_partitions_routing_mode(pulsar_producer_configuration_t *conf);
138PULSAR_PUBLIC
void pulsar_producer_configuration_set_message_router(pulsar_producer_configuration_t *conf,
139 pulsar_message_router router,
void *ctx);
141PULSAR_PUBLIC
void pulsar_producer_configuration_set_hashing_scheme(pulsar_producer_configuration_t *conf,
142 pulsar_hashing_scheme scheme);
144PULSAR_PUBLIC pulsar_hashing_scheme
145pulsar_producer_configuration_get_hashing_scheme(pulsar_producer_configuration_t *conf);
147PULSAR_PUBLIC
void pulsar_producer_configuration_set_lazy_start_partitioned_producers(
148 pulsar_producer_configuration_t *conf,
int useLazyStartPartitionedProducers);
150PULSAR_PUBLIC
int pulsar_producer_configuration_get_lazy_start_partitioned_producers(
151 pulsar_producer_configuration_t *conf);
153PULSAR_PUBLIC
void pulsar_producer_configuration_set_block_if_queue_full(
154 pulsar_producer_configuration_t *conf,
int blockIfQueueFull);
156PULSAR_PUBLIC
int pulsar_producer_configuration_get_block_if_queue_full(
157 pulsar_producer_configuration_t *conf);
160PULSAR_PUBLIC
void pulsar_producer_configuration_set_batching_enabled(pulsar_producer_configuration_t *conf,
161 int batchingEnabled);
163PULSAR_PUBLIC
int pulsar_producer_configuration_get_batching_enabled(pulsar_producer_configuration_t *conf);
165PULSAR_PUBLIC
void pulsar_producer_configuration_set_batching_max_messages(
166 pulsar_producer_configuration_t *conf,
unsigned int batchingMaxMessages);
168PULSAR_PUBLIC
unsigned int pulsar_producer_configuration_get_batching_max_messages(
169 pulsar_producer_configuration_t *conf);
171PULSAR_PUBLIC
void pulsar_producer_configuration_set_batching_max_allowed_size_in_bytes(
172 pulsar_producer_configuration_t *conf,
unsigned long batchingMaxAllowedSizeInBytes);
174PULSAR_PUBLIC
unsigned long pulsar_producer_configuration_get_batching_max_allowed_size_in_bytes(
175 pulsar_producer_configuration_t *conf);
177PULSAR_PUBLIC
void pulsar_producer_configuration_set_batching_max_publish_delay_ms(
178 pulsar_producer_configuration_t *conf,
unsigned long batchingMaxPublishDelayMs);
180PULSAR_PUBLIC
unsigned long pulsar_producer_configuration_get_batching_max_publish_delay_ms(
181 pulsar_producer_configuration_t *conf);
183PULSAR_PUBLIC
void pulsar_producer_configuration_set_property(pulsar_producer_configuration_t *conf,
184 const char *name,
const char *value);
186PULSAR_PUBLIC
int pulsar_producer_is_encryption_enabled(pulsar_producer_configuration_t *conf);
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);
191PULSAR_PUBLIC pulsar_producer_crypto_failure_action
192pulsar_producer_configuration_get_crypto_failure_action(pulsar_producer_configuration_t *conf);
194PULSAR_PUBLIC
void pulsar_producer_configuration_set_crypto_failure_action(
195 pulsar_producer_configuration_t *conf, pulsar_producer_crypto_failure_action cryptoFailureAction);
197PULSAR_PUBLIC
void pulsar_producer_configuration_set_encryption_key(pulsar_producer_configuration_t *conf,