@@ -47,6 +47,10 @@ static const std::string CFG_MAX_PENDING_CHUNKED_MESSAGE = "maxPendingChunkedMes
4747static const std::string CFG_AUTO_ACK_OLDEST_CHUNKED_MESSAGE_ON_QUEUE_FULL =
4848 " autoAckOldestChunkedMessageOnQueueFull" ;
4949static const std::string CFG_BATCH_INDEX_ACK_ENABLED = " batchIndexAckEnabled" ;
50+ static const std::string CFG_DEAD_LETTER_POLICY = " deadLetterPolicy" ;
51+ static const std::string CFG_DLQ_POLICY_TOPIC = " deadLetterTopic" ;
52+ static const std::string CFG_DLQ_POLICY_MAX_REDELIVER_COUNT = " maxRedeliverCount" ;
53+ static const std::string CFG_DLQ_POLICY_INIT_SUB_NAME = " initialSubscriptionName" ;
5054
5155static const std::map<std::string, pulsar_consumer_type> SUBSCRIPTION_TYPE = {
5256 {" Exclusive" , pulsar_ConsumerExclusive},
@@ -239,6 +243,28 @@ ConsumerConfig::ConsumerConfig(const Napi::Object &consumerConfig, pulsar_messag
239243 pulsar_consumer_configuration_set_batch_index_ack_enabled (this ->cConsumerConfig .get (),
240244 batchIndexAckEnabled);
241245 }
246+
247+ if (consumerConfig.Has (CFG_DEAD_LETTER_POLICY) && consumerConfig.Get (CFG_DEAD_LETTER_POLICY).IsObject ()) {
248+ pulsar_consumer_config_dead_letter_policy_t dlq_policy{};
249+ Napi::Object dlqPolicyObject = consumerConfig.Get (CFG_DEAD_LETTER_POLICY).ToObject ();
250+ std::string dlq_topic_str;
251+ std::string init_subscription_name;
252+ if (dlqPolicyObject.Has (CFG_DLQ_POLICY_TOPIC) && dlqPolicyObject.Get (CFG_DLQ_POLICY_TOPIC).IsString ()) {
253+ dlq_topic_str = dlqPolicyObject.Get (CFG_DLQ_POLICY_TOPIC).ToString ().Utf8Value ();
254+ dlq_policy.dead_letter_topic = dlq_topic_str.c_str ();
255+ }
256+ if (dlqPolicyObject.Has (CFG_DLQ_POLICY_MAX_REDELIVER_COUNT) &&
257+ dlqPolicyObject.Get (CFG_DLQ_POLICY_MAX_REDELIVER_COUNT).IsNumber ()) {
258+ dlq_policy.max_redeliver_count =
259+ dlqPolicyObject.Get (CFG_DLQ_POLICY_MAX_REDELIVER_COUNT).ToNumber ().Int32Value ();
260+ }
261+ if (dlqPolicyObject.Has (CFG_DLQ_POLICY_INIT_SUB_NAME) &&
262+ dlqPolicyObject.Get (CFG_DLQ_POLICY_INIT_SUB_NAME).IsString ()) {
263+ init_subscription_name = dlqPolicyObject.Get (CFG_DLQ_POLICY_INIT_SUB_NAME).ToString ().Utf8Value ();
264+ dlq_policy.initial_subscription_name = init_subscription_name.c_str ();
265+ }
266+ pulsar_consumer_configuration_set_dlq_policy (this ->cConsumerConfig .get (), &dlq_policy);
267+ }
242268}
243269
244270ConsumerConfig::~ConsumerConfig () {
0 commit comments