|
24 | 24 | import static org.testng.Assert.assertNull;
|
25 | 25 | import static org.testng.Assert.assertTrue;
|
26 | 26 | import static org.testng.Assert.fail;
|
| 27 | + |
27 | 28 | import java.time.Duration;
|
28 | 29 | import java.time.Instant;
|
29 | 30 | import java.util.ArrayList;
|
|
45 | 46 | import org.apache.pulsar.broker.BrokerTestUtil;
|
46 | 47 | import org.apache.pulsar.client.api.schema.GenericRecord;
|
47 | 48 | import org.apache.pulsar.client.impl.ConsumerBuilderImpl;
|
| 49 | +import org.apache.pulsar.client.impl.ConsumerImpl; |
| 50 | +import org.apache.pulsar.client.impl.MultiTopicsConsumerImpl; |
| 51 | +import org.apache.pulsar.client.impl.ProducerImpl; |
48 | 52 | import org.apache.pulsar.client.util.RetryMessageUtil;
|
49 | 53 | import org.apache.pulsar.common.policies.data.SchemaCompatibilityStrategy;
|
50 | 54 | import org.awaitility.Awaitility;
|
@@ -1123,6 +1127,7 @@ public void testDeadLetterTopicWithProducerBuilder() throws Exception {
|
1123 | 1127 | // enable batch
|
1124 | 1128 | DeadLetterProducerBuilderCustomizer producerBuilderCustomizer = (context, producerBuilder) -> {
|
1125 | 1129 | producerBuilder.enableBatching(true);
|
| 1130 | + producerBuilder.enableChunking(false); |
1126 | 1131 | };
|
1127 | 1132 | String subscriptionName = "my-subscription";
|
1128 | 1133 | String subscriptionNameDLQ = "my-subscription-DLQ";
|
@@ -1183,6 +1188,23 @@ public void testDeadLetterTopicWithProducerBuilder() throws Exception {
|
1183 | 1188 | } while (totalInDeadLetter < sendMessages);
|
1184 | 1189 | assertTrue(messageContent.isEmpty());
|
1185 | 1190 |
|
| 1191 | + // check the retry topic producer enable batch |
| 1192 | + List<ConsumerImpl<byte[]>> consumers = ((MultiTopicsConsumerImpl<byte[]>) consumer).getConsumers(); |
| 1193 | + for (ConsumerImpl<byte[]> consumerImpl : consumers) { |
| 1194 | + Producer<byte[]> retryProducer = consumerImpl.getRetryLetterProducer(); |
| 1195 | + Producer<byte[]> deadLetterProducer = consumerImpl.getDeadLetterProducer(); |
| 1196 | + // there are two type of consumers in MultiTopicsConsumerImpl when enableRetry is true |
| 1197 | + // 1. consumer subscribe to original topic |
| 1198 | + // 2. consumer subscribe to retry topic |
| 1199 | + if (consumerImpl.getTopic().endsWith(RetryMessageUtil.RETRY_GROUP_TOPIC_SUFFIX)) { |
| 1200 | + assertTrue(((ProducerImpl<byte[]>) retryProducer).isBatchMessagingEnabled()); |
| 1201 | + assertTrue(((ProducerImpl<byte[]>) deadLetterProducer).isBatchMessagingEnabled()); |
| 1202 | + } else { |
| 1203 | + assertTrue(((ProducerImpl<byte[]>) retryProducer).isBatchMessagingEnabled()); |
| 1204 | + assertNull(deadLetterProducer); |
| 1205 | + } |
| 1206 | + } |
| 1207 | + |
1186 | 1208 | deadLetterConsumer.close();
|
1187 | 1209 | consumer.close();
|
1188 | 1210 |
|
|
0 commit comments