You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by mm...@apache.org on 2018/03/04 17:10:20 UTC
[incubator-pulsar] branch master updated: Refactored all unit tests
to use new typed API with builders for configuration (#1320)
This is an automated email from the ASF dual-hosted git repository.
mmerli pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-pulsar.git
The following commit(s) were added to refs/heads/master by this push:
new 052814d Refactored all unit tests to use new typed API with builders for configuration (#1320)
052814d is described below
commit 052814d516adb429d2c0fca030920f26770a52ac
Author: Matteo Merli <mm...@apache.org>
AuthorDate: Sun Mar 4 09:10:18 2018 -0800
Refactored all unit tests to use new typed API with builders for configuration (#1320)
* Refactored all unit tests to use new typed API with builders for configuration
* Did conversion in pulsar-client tool
* Refactoring typo fixes
---
.../AuthenticationProviderBasic.java | 6 +-
.../broker/authorization/AuthorizationService.java | 9 +-
.../apache/pulsar/broker/admin/AdminApiTest.java | 201 +++---
.../apache/pulsar/broker/admin/AdminApiTest2.java | 77 +-
.../broker/admin/CreateSubscriptionTest.java | 5 +-
.../broker/admin/IncrementPartitionsTest.java | 9 +-
.../AntiAffinityNamespaceGroupTest.java | 7 +-
.../broker/loadbalance/LoadBalancerTest.java | 2 +
.../loadbalance/ModularLoadManagerImplTest.java | 5 +-
.../loadbalance/SimpleLoadManagerImplTest.java | 2 +-
.../broker/namespace/NamespaceServiceTest.java | 19 +-
.../broker/namespace/NamespaceUnloadingTest.java | 3 +-
.../broker/service/AddMissingPatchVersionTest.java | 1 -
.../broker/service/BacklogQuotaManagerTest.java | 118 ++-
.../pulsar/broker/service/BatchMessageTest.java | 227 +++---
.../broker/service/BrokerBkEnsemblesTests.java | 50 +-
.../pulsar/broker/service/BrokerServiceTest.java | 267 +++----
.../service/BrokerServiceThrottlingTest.java | 50 +-
.../pulsar/broker/service/PartitionKeyTest.java | 14 +-
.../pulsar/broker/service/PeerReplicatorTest.java | 23 +-
.../PersistentDispatcherFailoverConsumerTest.java | 9 +-
.../broker/service/PersistentFailoverE2ETest.java | 158 ++---
.../broker/service/PersistentQueueE2ETest.java | 188 ++---
.../service/PersistentTopicConcurrentTest.java | 2 +
.../broker/service/PersistentTopicE2ETest.java | 301 +++-----
.../pulsar/broker/service/PersistentTopicTest.java | 13 +-
.../pulsar/broker/service/ReplicatorTest.java | 83 +--
.../pulsar/broker/service/ReplicatorTestBase.java | 39 +-
.../pulsar/broker/service/ResendRequestTest.java | 143 ++--
.../pulsar/broker/service/ServerCnxTest.java | 10 +-
.../broker/service/SubscriptionSeekTest.java | 13 +-
.../broker/service/TopicTerminationTest.java | 104 ++-
.../broker/service/persistent/ChecksumTest.java | 4 +-
.../broker/stats/ManagedLedgerMetricsTest.java | 3 +-
.../pulsar/broker/stats/PrometheusMetricsTest.java | 8 +-
.../zookeeper/ZooKeeperClientAspectJTest.java | 2 +-
.../api/AuthenticatedProducerConsumerTest.java | 41 +-
.../AuthenticationTlsHostnameVerificationTest.java | 34 +-
.../api/AuthorizationProducerConsumerTest.java | 55 +-
.../pulsar/client/api/BrokerServiceLookupTest.java | 378 +++++-----
.../pulsar/client/api/ClientDeduplicationTest.java | 33 +-
.../apache/pulsar/client/api/ClientErrorsTest.java | 106 ++-
.../client/api/DispatcherBlockConsumerTest.java | 205 +++---
.../client/api/MessageDispatchThrottlingTest.java | 196 +++--
.../pulsar/client/api/MockBrokerService.java | 2 -
.../pulsar/client/api/NonPersistentTopicTest.java | 148 ++--
.../api/PartitionedProducerConsumerTest.java | 147 ++--
.../client/api/SimpleProducerConsumerStatTest.java | 146 ++--
.../client/api/SimpleProducerConsumerTest.java | 788 +++++++++------------
.../pulsar/client/api/TlsProducerConsumerBase.java | 13 +-
.../pulsar/client/api/TlsProducerConsumerTest.java | 13 +-
.../apache/pulsar/client/api/TopicReaderTest.java | 140 ++--
.../V1_ProducerConsumerTest.java} | 171 ++---
.../client/impl/BrokerClientIntegrationTest.java | 192 +++--
.../client/impl/ConsumeBaseExceptionTest.java | 16 +-
.../client/impl/ConsumerConfigurationTest.java | 40 +-
.../apache/pulsar/client/impl/MessageIdTest.java | 122 ++--
.../client/impl/PatternTopicsConsumerImplTest.java | 113 +--
.../PerMessageUnAcknowledgedRedeliveryTest.java | 99 ++-
.../pulsar/client/impl/RawMessageSerDeserTest.java | 3 +-
.../apache/pulsar/client/impl/RawReaderTest.java | 35 +-
.../pulsar/client/impl/TopicsConsumerImplTest.java | 78 +-
.../impl/UnAcknowledgedMessagesTimeoutTest.java | 114 ++-
.../pulsar/client/impl/ZeroQueueSizeTest.java | 81 +--
.../pulsar/common/naming/NamespaceBundleTest.java | 1 +
.../pulsar/common/naming/NamespaceBundlesTest.java | 1 +
.../pulsar/compaction/CompactedTopicTest.java | 33 +-
.../apache/pulsar/compaction/CompactionTest.java | 128 ++--
.../apache/pulsar/compaction/CompactorTest.java | 37 +-
.../stats/client/PulsarBrokerStatsClientTest.java | 22 +-
.../apache/pulsar/utils/StatsOutputStreamTest.java | 1 -
.../websocket/proxy/ProxyAuthenticationTest.java | 4 -
.../websocket/proxy/ProxyAuthorizationTest.java | 1 -
.../websocket/proxy/SimpleProducerSocket.java | 9 +-
.../pulsar/client/admin/PersistentTopics.java | 4 +-
.../apache/pulsar/client/admin/PulsarAdmin.java | 17 +
.../admin/internal/PersistentTopicsImpl.java | 21 +-
.../kafka/compat/examples/ConsumerExample.java | 2 +
.../kafka/compat/tests/KafkaConsumerTest.java | 42 +-
.../kafka/compat/tests/KafkaProducerTest.java | 10 +-
.../pulsar/admin/cli/CmdPersistentTopics.java | 4 +-
.../apache/pulsar/admin/cli/PulsarAdminTool.java | 15 +-
.../org/apache/pulsar/client/cli/CmdConsume.java | 23 +-
.../org/apache/pulsar/client/cli/CmdProduce.java | 34 +-
.../apache/pulsar/client/cli/PulsarClientTool.java | 27 +-
.../apache/pulsar/admin/cli/utils/IOUtilsTest.java | 20 +-
.../cli/utils/NameValueParameterSplitterTest.java | 5 +-
.../pulsar/client/cli/PulsarClientToolTest.java | 1 -
.../apache/pulsar/client/api/ConsumerBuilder.java | 13 +
.../org/apache/pulsar/client/api/Producer.java | 8 +-
.../pulsar/client/api/ProducerConfiguration.java | 2 +
.../pulsar/client/impl/ConsumerBuilderImpl.java | 24 +-
.../pulsar/client/impl/ProducerBuilderImpl.java | 32 +-
.../impl/SinglePartitionMessageRouterImpl.java | 2 +-
.../pulsar/client/impl/TopicMessageImpl.java | 10 +-
.../pulsar/client/impl/TopicsConsumerImpl.java | 16 +-
.../pulsar/client/impl/UnAckedMessageTracker.java | 4 +-
.../client/impl/UnAckedTopicMessageTracker.java | 2 +-
.../impl/conf/ConsumerConfigurationData.java | 3 +-
.../client/impl/conf/ReaderConfigurationData.java | 1 +
.../client/api/ConsumerConfigurationTest.java | 7 +-
.../pulsar/client/api/MessageRouterTest.java | 5 +-
.../pulsar/client/impl/MessageBuilderTest.java | 18 +-
.../pulsar/client/impl/MessageIdCompareToTest.java | 1 -
.../apache/pulsar/client/impl/MessageImplTest.java | 8 +-
.../RoundRobinPartitionMessageRouterImplTest.java | 6 +-
.../impl/SinglePartitionMessageRouterImplTest.java | 6 +-
.../client/tutorial/ContinuousAsyncProducer.java | 5 +-
.../pulsar/client/tutorial/ContinuousProducer.java | 5 +-
.../client/tutorial/SampleAsyncProducer.java | 14 +-
.../pulsar/client/tutorial/SampleConsumer.java | 10 +-
.../client/tutorial/SampleConsumerListener.java | 29 +-
.../client/tutorial/SampleCryptoConsumer.java | 26 +-
.../client/tutorial/SampleCryptoProducer.java | 20 +-
.../pulsar/client/tutorial/SampleProducer.java | 2 +-
.../ProxyAuthenticatedProducerConsumerTest.java | 41 +-
.../proxy/server/ProxyForwardAuthDataTest.java | 14 +-
.../proxy/server/ProxyRolesEnforcementTest.java | 77 +-
.../org/apache/pulsar/proxy/server/ProxyTest.java | 39 +-
.../apache/pulsar/proxy/server/ProxyTlsTest.java | 37 +-
.../server/ProxyWithAuthorizationNegTest.java | 74 +-
.../proxy/server/ProxyWithAuthorizationTest.java | 130 ++--
.../server/ProxyWithoutServiceDiscoveryTest.java | 46 +-
123 files changed, 3095 insertions(+), 3788 deletions(-)
diff --git a/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/authentication/AuthenticationProviderBasic.java b/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/authentication/AuthenticationProviderBasic.java
index f2f2f65..faa8718 100644
--- a/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/authentication/AuthenticationProviderBasic.java
+++ b/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/authentication/AuthenticationProviderBasic.java
@@ -24,6 +24,8 @@ import org.apache.commons.codec.digest.Md5Crypt;
import org.apache.commons.lang3.StringUtils;
import org.apache.pulsar.broker.ServiceConfiguration;
+import lombok.Cleanup;
+
import javax.naming.AuthenticationException;
import java.io.BufferedReader;
import java.io.File;
@@ -49,7 +51,8 @@ public class AuthenticationProviderBasic implements AuthenticationProvider {
} else if (!confFile.isFile()) {
throw new IOException("The path is not a file");
}
- BufferedReader reader = new BufferedReader(new FileReader(confFile));
+
+ @Cleanup BufferedReader reader = new BufferedReader(new FileReader(confFile));
users = new HashMap<>();
for (String line : reader.lines().toArray(s -> new String[s])) {
List<String> splitLine = Arrays.asList(line.split(":"));
@@ -58,7 +61,6 @@ public class AuthenticationProviderBasic implements AuthenticationProvider {
}
users.put(splitLine.get(0), splitLine.get(1));
}
- reader.close();
}
@Override
diff --git a/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/authorization/AuthorizationService.java b/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/authorization/AuthorizationService.java
index f38482d..76e98cc 100644
--- a/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/authorization/AuthorizationService.java
+++ b/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/authorization/AuthorizationService.java
@@ -21,28 +21,21 @@ package org.apache.pulsar.broker.authorization;
import static java.util.concurrent.TimeUnit.SECONDS;
import static org.apache.pulsar.zookeeper.ZooKeeperCache.cacheTimeOutInSec;
-import java.util.Map;
-import java.util.Map.Entry;
import java.util.Set;
import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.atomic.AtomicInteger;
-
-import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang3.StringUtils;
import org.apache.pulsar.broker.PulsarServerException;
import org.apache.pulsar.broker.ServiceConfiguration;
import org.apache.pulsar.broker.authentication.AuthenticationDataSource;
import org.apache.pulsar.broker.cache.ConfigurationCacheService;
-import org.apache.pulsar.common.naming.TopicName;
import org.apache.pulsar.common.naming.NamespaceName;
+import org.apache.pulsar.common.naming.TopicName;
import org.apache.pulsar.common.policies.data.AuthAction;
import org.apache.pulsar.common.util.FutureUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import com.google.common.collect.Maps;
-
/**
* Authorization service that manages pluggable authorization provider and authorize requests accordingly.
*
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest.java
index 7e098cf..0f5cfa5 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest.java
@@ -55,22 +55,20 @@ import org.apache.pulsar.client.admin.PulsarAdminException.PreconditionFailedExc
import org.apache.pulsar.client.admin.internal.LookupImpl;
import org.apache.pulsar.client.admin.internal.PersistentTopicsImpl;
import org.apache.pulsar.client.admin.internal.PropertiesImpl;
-import org.apache.pulsar.client.api.ClientConfiguration;
import org.apache.pulsar.client.api.Consumer;
-import org.apache.pulsar.client.api.ConsumerConfiguration;
+import org.apache.pulsar.client.api.ConsumerBuilder;
import org.apache.pulsar.client.api.Message;
+import org.apache.pulsar.client.api.MessageRoutingMode;
import org.apache.pulsar.client.api.Producer;
-import org.apache.pulsar.client.api.ProducerConfiguration;
-import org.apache.pulsar.client.api.ProducerConfiguration.MessageRoutingMode;
import org.apache.pulsar.client.api.PulsarClient;
import org.apache.pulsar.client.api.SubscriptionType;
import org.apache.pulsar.common.lookup.data.LookupData;
-import org.apache.pulsar.common.naming.TopicDomain;
-import org.apache.pulsar.common.naming.TopicName;
import org.apache.pulsar.common.naming.NamespaceBundle;
import org.apache.pulsar.common.naming.NamespaceBundleFactory;
import org.apache.pulsar.common.naming.NamespaceBundles;
import org.apache.pulsar.common.naming.NamespaceName;
+import org.apache.pulsar.common.naming.TopicDomain;
+import org.apache.pulsar.common.naming.TopicName;
import org.apache.pulsar.common.partition.PartitionedTopicMetadata;
import org.apache.pulsar.common.policies.data.AuthAction;
import org.apache.pulsar.common.policies.data.AutoFailoverPolicyData;
@@ -164,8 +162,7 @@ public class AdminApiTest extends MockedPulsarServiceBaseTest {
@DataProvider(name = "topicType")
public Object[][] topicTypeProvider() {
- return new Object[][] { { TopicDomain.persistent.value() },
- { TopicDomain.non_persistent.value() } };
+ return new Object[][] { { TopicDomain.persistent.value() }, { TopicDomain.non_persistent.value() } };
}
@Test
@@ -443,12 +440,14 @@ public class AdminApiTest extends MockedPulsarServiceBaseTest {
/**
* Verifies broker sets watch on dynamic-configuration map even with invalid init json data
+ *
* <pre>
* 1. Set invalid json at dynamic-config znode
* 2. Broker fails to deserialize znode content but sets the watch on znode
* 3. Update znode with valid json map
* 4. Broker should get watch and update the dynamic-config map
* </pre>
+ *
* @throws Exception
*/
@Test
@@ -485,6 +484,7 @@ public class AdminApiTest extends MockedPulsarServiceBaseTest {
* 3. trigger watch and listener
* 4. verify that config is updated
* </pre>
+ *
* @throws Exception
*/
@Test
@@ -611,7 +611,7 @@ public class AdminApiTest extends MockedPulsarServiceBaseTest {
assertEquals(admin.namespaces().getPersistence("prop-xyz/use/ns1"), new PersistencePolicies(3, 2, 1, 10.0));
// Force topic creation and namespace being loaded
- Producer producer = pulsarClient.createProducer("persistent://prop-xyz/use/ns1/my-topic");
+ Producer<byte[]> producer = pulsarClient.newProducer().topic("persistent://prop-xyz/use/ns1/my-topic").create();
producer.close();
admin.persistentTopics().delete("persistent://prop-xyz/use/ns1/my-topic");
@@ -644,7 +644,7 @@ public class AdminApiTest extends MockedPulsarServiceBaseTest {
}
// Force topic creation and namespace being loaded
- producer = pulsarClient.createProducer("persistent://prop-xyz/use/ns2/my-topic");
+ producer = pulsarClient.newProducer().topic("persistent://prop-xyz/use/ns2/my-topic").create();
producer.close();
admin.persistentTopics().delete("persistent://prop-xyz/use/ns2/my-topic");
@@ -664,12 +664,10 @@ public class AdminApiTest extends MockedPulsarServiceBaseTest {
// create consumer and subscription
URL pulsarUrl = new URL("http://127.0.0.1" + ":" + BROKER_WEBSERVICE_PORT);
- ClientConfiguration clientConf = new ClientConfiguration();
- clientConf.setStatsInterval(0, TimeUnit.SECONDS);
- PulsarClient client = PulsarClient.create(pulsarUrl.toString(), clientConf);
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setSubscriptionType(SubscriptionType.Exclusive);
- Consumer consumer = client.subscribe(persistentTopicName, "my-sub", conf);
+ PulsarClient client = PulsarClient.builder().serviceUrl(pulsarUrl.toString()).statsInterval(0, TimeUnit.SECONDS)
+ .build();
+ Consumer<byte[]> consumer = client.newConsumer().topic(persistentTopicName).subscriptionName("my-sub")
+ .subscriptionType(SubscriptionType.Exclusive).subscribe();
assertEquals(admin.persistentTopics().getSubscriptions(persistentTopicName), Lists.newArrayList("my-sub"));
@@ -684,7 +682,7 @@ public class AdminApiTest extends MockedPulsarServiceBaseTest {
PersistentTopicInternalStats internalStats = admin.persistentTopics().getInternalStats(persistentTopicName);
assertEquals(internalStats.cursors.keySet(), Sets.newTreeSet(Lists.newArrayList("my-sub")));
- List<Message> messages = admin.persistentTopics().peekMessages(persistentTopicName, "my-sub", 3);
+ List<Message<byte[]>> messages = admin.persistentTopics().peekMessages(persistentTopicName, "my-sub", 3);
assertEquals(messages.size(), 3);
for (int i = 0; i < 3; i++) {
String expectedMessage = "message-" + i;
@@ -737,8 +735,8 @@ public class AdminApiTest extends MockedPulsarServiceBaseTest {
assertEquals(admin.persistentTopics().getPartitionedTopicList("prop-xyz/use/ns1"), Lists.newArrayList());
final String partitionedTopicName = "persistent://prop-xyz/use/ns1/" + topicName;
admin.persistentTopics().createPartitionedTopic(partitionedTopicName, 4);
- assertEquals(admin.persistentTopics().getPartitionedTopicList("prop-xyz/use/ns1"), Lists.newArrayList(partitionedTopicName));
-
+ assertEquals(admin.persistentTopics().getPartitionedTopicList("prop-xyz/use/ns1"),
+ Lists.newArrayList(partitionedTopicName));
assertEquals(admin.persistentTopics().getPartitionedTopicMetadata(partitionedTopicName).partitions, 4);
@@ -752,12 +750,10 @@ public class AdminApiTest extends MockedPulsarServiceBaseTest {
// create consumer and subscription
URL pulsarUrl = new URL("http://127.0.0.1" + ":" + BROKER_WEBSERVICE_PORT);
- ClientConfiguration clientConf = new ClientConfiguration();
- clientConf.setStatsInterval(0, TimeUnit.SECONDS);
- PulsarClient client = PulsarClient.create(pulsarUrl.toString(), clientConf);
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setSubscriptionType(SubscriptionType.Exclusive);
- Consumer consumer = client.subscribe(partitionedTopicName, "my-sub", conf);
+ PulsarClient client = PulsarClient.builder().serviceUrl(pulsarUrl.toString()).statsInterval(0, TimeUnit.SECONDS)
+ .build();
+ Consumer<byte[]> consumer = client.newConsumer().topic(partitionedTopicName).subscriptionName("my-sub")
+ .subscriptionType(SubscriptionType.Exclusive).subscribe();
assertEquals(admin.persistentTopics().getSubscriptions(partitionedTopicName), Lists.newArrayList("my-sub"));
@@ -770,7 +766,8 @@ public class AdminApiTest extends MockedPulsarServiceBaseTest {
fail(e.getMessage());
}
- Consumer consumer1 = client.subscribe(partitionedTopicName, "my-sub-1", conf);
+ Consumer<byte[]> consumer1 = client.newConsumer().topic(partitionedTopicName).subscriptionName("my-sub-1")
+ .subscribe();
assertEquals(Sets.newHashSet(admin.persistentTopics().getSubscriptions(partitionedTopicName)),
Sets.newHashSet("my-sub", "my-sub-1"));
@@ -779,9 +776,8 @@ public class AdminApiTest extends MockedPulsarServiceBaseTest {
admin.persistentTopics().deleteSubscription(partitionedTopicName, "my-sub-1");
assertEquals(admin.persistentTopics().getSubscriptions(partitionedTopicName), Lists.newArrayList("my-sub"));
- ProducerConfiguration prodConf = new ProducerConfiguration();
- prodConf.setMessageRoutingMode(MessageRoutingMode.RoundRobinPartition);
- Producer producer = client.createProducer(partitionedTopicName, prodConf);
+ Producer<byte[]> producer = client.newProducer().topic(partitionedTopicName)
+ .messageRoutingMode(MessageRoutingMode.RoundRobinPartition).create();
for (int i = 0; i < 10; i++) {
String message = "message-" + i;
@@ -835,7 +831,7 @@ public class AdminApiTest extends MockedPulsarServiceBaseTest {
} catch (ConflictException ce) {
}
- producer = client.createProducer(partitionedTopicName);
+ producer = client.newProducer().topic(partitionedTopicName).create();
topics = admin.persistentTopics().getList("prop-xyz/use/ns1");
assertEquals(topics.size(), 4);
@@ -893,7 +889,7 @@ public class AdminApiTest extends MockedPulsarServiceBaseTest {
// Force to create a topic
final String namespace = "prop-xyz/use/ns1";
final String topicName = (new StringBuilder("persistent://")).append(namespace).append("/ds2").toString();
- Producer producer = pulsarClient.createProducer(topicName);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName).create();
producer.send("message".getBytes());
publishMessagesOnPersistentTopic(topicName, 0);
assertEquals(admin.persistentTopics().getList(namespace), Lists.newArrayList(topicName));
@@ -924,14 +920,13 @@ public class AdminApiTest extends MockedPulsarServiceBaseTest {
Lists.newArrayList("persistent://prop-xyz/use/ns1/ds2"));
// create consumer and subscription
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setSubscriptionType(SubscriptionType.Exclusive);
- Consumer consumer = pulsarClient.subscribe("persistent://prop-xyz/use/ns1/ds2", "my-sub", conf);
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic("persistent://prop-xyz/use/ns1/ds2")
+ .subscriptionName("my-sub").subscribe();
assertEquals(admin.persistentTopics().getSubscriptions("persistent://prop-xyz/use/ns1/ds2"),
Lists.newArrayList("my-sub"));
// Create producer
- Producer producer = pulsarClient.createProducer("persistent://prop-xyz/use/ns1/ds2");
+ Producer<byte[]> producer = pulsarClient.newProducer().topic("persistent://prop-xyz/use/ns1/ds2").create();
for (int i = 0; i < 10; i++) {
String message = "message-" + i;
producer.send(message.getBytes());
@@ -982,13 +977,14 @@ public class AdminApiTest extends MockedPulsarServiceBaseTest {
Lists.newArrayList("persistent://prop-xyz/use/ns1-bundles/ds2"));
// create consumer and subscription
- ConsumerConfiguration conf = new ConsumerConfiguration();
- Consumer consumer = pulsarClient.subscribe("persistent://prop-xyz/use/ns1-bundles/ds2", "my-sub", conf);
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic("persistent://prop-xyz/use/ns1-bundles/ds2")
+ .subscriptionName("my-sub").subscribe();
assertEquals(admin.persistentTopics().getSubscriptions("persistent://prop-xyz/use/ns1-bundles/ds2"),
Lists.newArrayList("my-sub"));
// Create producer
- Producer producer = pulsarClient.createProducer("persistent://prop-xyz/use/ns1-bundles/ds2");
+ Producer<byte[]> producer = pulsarClient.newProducer().topic("persistent://prop-xyz/use/ns1-bundles/ds2")
+ .create();
for (int i = 0; i < 10; i++) {
String message = "message-" + i;
producer.send(message.getBytes());
@@ -1028,14 +1024,20 @@ public class AdminApiTest extends MockedPulsarServiceBaseTest {
admin.namespaces().createNamespace("prop-xyz/use/ns1-bundles", numBundles);
// create consumer and subscription
- pulsarClient.subscribe("persistent://prop-xyz/use/ns1-bundles/ds2", "my-sub");
- pulsarClient.subscribe("persistent://prop-xyz/use/ns1-bundles/ds2", "my-sub-1");
- pulsarClient.subscribe("persistent://prop-xyz/use/ns1-bundles/ds2", "my-sub-2");
- pulsarClient.subscribe("persistent://prop-xyz/use/ns1-bundles/ds1", "my-sub");
- pulsarClient.subscribe("persistent://prop-xyz/use/ns1-bundles/ds1", "my-sub-1");
+ pulsarClient.newConsumer().topic("persistent://prop-xyz/use/ns1-bundles/ds2").subscriptionName("my-sub")
+ .subscribe();
+ pulsarClient.newConsumer().topic("persistent://prop-xyz/use/ns1-bundles/ds2").subscriptionName("my-sub-1")
+ .subscribe();
+ pulsarClient.newConsumer().topic("persistent://prop-xyz/use/ns1-bundles/ds2").subscriptionName("my-sub-2")
+ .subscribe();
+ pulsarClient.newConsumer().topic("persistent://prop-xyz/use/ns1-bundles/ds1").subscriptionName("my-sub")
+ .subscribe();
+ pulsarClient.newConsumer().topic("persistent://prop-xyz/use/ns1-bundles/ds1").subscriptionName("my-sub-1")
+ .subscribe();
// Create producer
- Producer producer = pulsarClient.createProducer("persistent://prop-xyz/use/ns1-bundles/ds2");
+ Producer<byte[]> producer = pulsarClient.newProducer().topic("persistent://prop-xyz/use/ns1-bundles/ds2")
+ .create();
for (int i = 0; i < 10; i++) {
String message = "message-" + i;
producer.send(message.getBytes());
@@ -1044,7 +1046,8 @@ public class AdminApiTest extends MockedPulsarServiceBaseTest {
producer.close();
// Create producer
- Producer producer1 = pulsarClient.createProducer("persistent://prop-xyz/use/ns1-bundles/ds1");
+ Producer<byte[]> producer1 = pulsarClient.newProducer().topic("persistent://prop-xyz/use/ns1-bundles/ds1")
+ .create();
for (int i = 0; i < 10; i++) {
String message = "message-" + i;
producer1.send(message.getBytes());
@@ -1082,11 +1085,16 @@ public class AdminApiTest extends MockedPulsarServiceBaseTest {
admin.namespaces().createNamespace("prop-xyz/use/ns1-bundles", numBundles);
// create consumer and subscription
- Consumer consumer1 = pulsarClient.subscribe("persistent://prop-xyz/use/ns1-bundles/ds2", "my-sub");
- Consumer consumer2 = pulsarClient.subscribe("persistent://prop-xyz/use/ns1-bundles/ds2", "my-sub-1");
- /* Consumer consumer3 = */ pulsarClient.subscribe("persistent://prop-xyz/use/ns1-bundles/ds2", "my-sub-2");
- Consumer consumer4 = pulsarClient.subscribe("persistent://prop-xyz/use/ns1-bundles/ds1", "my-sub");
- Consumer consumer5 = pulsarClient.subscribe("persistent://prop-xyz/use/ns1-bundles/ds1", "my-sub-1");
+ Consumer<byte[]> consumer1 = pulsarClient.newConsumer().topic("persistent://prop-xyz/use/ns1-bundles/ds2")
+ .subscriptionName("my-sub").subscribe();
+ Consumer<byte[]> consumer2 = pulsarClient.newConsumer().topic("persistent://prop-xyz/use/ns1-bundles/ds2")
+ .subscriptionName("my-sub-1").subscribe();
+ /* Consumer consumer3 = */ pulsarClient.newConsumer().topic("persistent://prop-xyz/use/ns1-bundles/ds2")
+ .subscriptionName("my-sub-2").subscribe();
+ Consumer<byte[]> consumer4 = pulsarClient.newConsumer().topic("persistent://prop-xyz/use/ns1-bundles/ds1")
+ .subscriptionName("my-sub").subscribe();
+ Consumer<byte[]> consumer5 = pulsarClient.newConsumer().topic("persistent://prop-xyz/use/ns1-bundles/ds1")
+ .subscriptionName("my-sub-1").subscribe();
try {
admin.namespaces().unsubscribeNamespace("prop-xyz/use/ns1-bundles", "my-sub");
@@ -1132,7 +1140,7 @@ public class AdminApiTest extends MockedPulsarServiceBaseTest {
}
private void publishMessagesOnPersistentTopic(String topicName, int messages, int startIdx) throws Exception {
- Producer producer = pulsarClient.createProducer(topicName);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName).create();
for (int i = startIdx; i < (messages + startIdx); i++) {
String message = "message-" + i;
@@ -1177,7 +1185,7 @@ public class AdminApiTest extends MockedPulsarServiceBaseTest {
@Test
public void testDeleteFailedReturnCode() throws Exception {
String topicName = "persistent://prop-xyz/use/ns1/my-topic";
- Producer producer = pulsarClient.createProducer(topicName);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName).create();
try {
admin.persistentTopics().delete(topicName);
@@ -1188,7 +1196,7 @@ public class AdminApiTest extends MockedPulsarServiceBaseTest {
producer.close();
- Consumer consumer = pulsarClient.subscribe(topicName, "sub");
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topicName).subscriptionName("sub").subscribe();
try {
admin.persistentTopics().delete(topicName);
@@ -1257,9 +1265,8 @@ public class AdminApiTest extends MockedPulsarServiceBaseTest {
topicName = "persistent://prop-xyz/use/ns1/" + topicName;
// create consumer and subscription
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setSubscriptionType(SubscriptionType.Exclusive);
- Consumer consumer = pulsarClient.subscribe(topicName, "my-sub", conf);
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topicName).subscriptionName("my-sub")
+ .subscriptionType(SubscriptionType.Exclusive).subscribe();
assertEquals(admin.persistentTopics().getSubscriptions(topicName), Lists.newArrayList("my-sub"));
@@ -1271,11 +1278,11 @@ public class AdminApiTest extends MockedPulsarServiceBaseTest {
publishMessagesOnPersistentTopic(topicName, 5, 5);
- List<Message> messages = admin.persistentTopics().peekMessages(topicName, "my-sub", 10);
+ List<Message<byte[]>> messages = admin.persistentTopics().peekMessages(topicName, "my-sub", 10);
assertEquals(messages.size(), 10);
for (int i = 0; i < 10; i++) {
- Message message = consumer.receive();
+ Message<byte[]> message = consumer.receive();
consumer.acknowledge(message);
}
// messages should still be available due to retention
@@ -1285,7 +1292,7 @@ public class AdminApiTest extends MockedPulsarServiceBaseTest {
int receivedAfterReset = 0;
for (int i = 4; i < 10; i++) {
- Message message = consumer.receive();
+ Message<byte[]> message = consumer.receive();
consumer.acknowledge(message);
++receivedAfterReset;
String expected = "message-" + i;
@@ -1309,9 +1316,8 @@ public class AdminApiTest extends MockedPulsarServiceBaseTest {
topicName = "persistent://prop-xyz/use/ns1/" + topicName;
// create consumer and subscription
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setSubscriptionType(SubscriptionType.Exclusive);
- Consumer consumer = pulsarClient.subscribe(topicName, "my-sub", conf);
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topicName).subscriptionName("my-sub")
+ .subscriptionType(SubscriptionType.Exclusive).subscribe();
assertEquals(admin.persistentTopics().getSubscriptions(topicName), Lists.newArrayList("my-sub"));
@@ -1327,14 +1333,14 @@ public class AdminApiTest extends MockedPulsarServiceBaseTest {
publishMessagesOnPersistentTopic(topicName, 2, 8);
- List<Message> messages = admin.persistentTopics().peekMessages(topicName, "my-sub", 10);
+ List<Message<byte[]>> messages = admin.persistentTopics().peekMessages(topicName, "my-sub", 10);
assertEquals(messages.size(), 10);
messages.forEach(message -> {
LOG.info("Peeked message: {}", new String(message.getData()));
});
for (int i = 0; i < 10; i++) {
- Message message = consumer.receive();
+ Message<byte[]> message = consumer.receive();
consumer.acknowledge(message);
}
@@ -1344,7 +1350,7 @@ public class AdminApiTest extends MockedPulsarServiceBaseTest {
// Should received messages from 4-9
for (int i = 4; i < 10; i++) {
- Message message = consumer.receive();
+ Message<byte[]> message = consumer.receive();
consumer.acknowledge(message);
++receivedAfterReset;
String expected = "message-" + i;
@@ -1358,7 +1364,7 @@ public class AdminApiTest extends MockedPulsarServiceBaseTest {
// Should received messages from 7-9
for (int i = 7; i < 10; i++) {
- Message message = consumer.receive();
+ Message<byte[]> message = consumer.receive();
consumer.acknowledge(message);
++receivedAfterReset;
String expected = "message-" + i;
@@ -1381,9 +1387,8 @@ public class AdminApiTest extends MockedPulsarServiceBaseTest {
admin.persistentTopics().createPartitionedTopic(topicName, 4);
// create consumer and subscription
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setSubscriptionType(SubscriptionType.Exclusive);
- Consumer consumer = pulsarClient.subscribe(topicName, "my-sub", conf);
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topicName).subscriptionName("my-sub")
+ .subscriptionType(SubscriptionType.Exclusive).subscribe();
List<String> topics = admin.persistentTopics().getList("prop-xyz/use/ns1");
assertEquals(topics.size(), 4);
@@ -1397,7 +1402,7 @@ public class AdminApiTest extends MockedPulsarServiceBaseTest {
publishMessagesOnPersistentTopic(topicName, 5, 5);
for (int i = 0; i < 10; i++) {
- Message message = consumer.receive();
+ Message<byte[]> message = consumer.receive();
consumer.acknowledge(message);
}
// messages should still be available due to retention
@@ -1407,7 +1412,7 @@ public class AdminApiTest extends MockedPulsarServiceBaseTest {
Set<String> expectedMessages = Sets.newHashSet();
Set<String> receivedMessages = Sets.newHashSet();
for (int i = 4; i < 10; i++) {
- Message message = consumer.receive();
+ Message<byte[]> message = consumer.receive();
consumer.acknowledge(message);
expectedMessages.add("message-" + i);
receivedMessages.add(new String(message.getData()));
@@ -1434,22 +1439,20 @@ public class AdminApiTest extends MockedPulsarServiceBaseTest {
// create consumer and subscription
URL pulsarUrl = new URL("http://127.0.0.1" + ":" + BROKER_WEBSERVICE_PORT);
- ClientConfiguration clientConf = new ClientConfiguration();
- clientConf.setStatsInterval(0, TimeUnit.SECONDS);
- PulsarClient client = PulsarClient.create(pulsarUrl.toString(), clientConf);
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setSubscriptionType(SubscriptionType.Exclusive);
- Consumer consumer = client.subscribe(topicName, "my-sub", conf);
+ PulsarClient client = PulsarClient.builder().serviceUrl(pulsarUrl.toString()).statsInterval(0, TimeUnit.SECONDS)
+ .build();
+ Consumer<byte[]> consumer = client.newConsumer().topic(topicName).subscriptionName("my-sub")
+ .subscriptionType(SubscriptionType.Exclusive).subscribe();
assertEquals(admin.persistentTopics().getSubscriptions(topicName), Lists.newArrayList("my-sub"));
publishMessagesOnPersistentTopic(topicName, 10);
- List<Message> messages = admin.persistentTopics().peekMessages(topicName, "my-sub", 10);
+ List<Message<byte[]>> messages = admin.persistentTopics().peekMessages(topicName, "my-sub", 10);
assertEquals(messages.size(), 10);
for (int i = 0; i < 10; i++) {
- Message message = consumer.receive();
+ Message<byte[]> message = consumer.receive();
consumer.acknowledge(message);
}
// use invalid timestamp
@@ -1461,7 +1464,7 @@ public class AdminApiTest extends MockedPulsarServiceBaseTest {
}
admin.persistentTopics().resetCursor(topicName, "my-sub", System.currentTimeMillis() + 90000);
- consumer = client.subscribe(topicName, "my-sub", conf);
+ consumer = client.newConsumer().topic(topicName).subscriptionName("my-sub").subscribe();
consumer.close();
client.close();
@@ -1500,6 +1503,7 @@ public class AdminApiTest extends MockedPulsarServiceBaseTest {
* 3. expire message on sub-1 : backlog for sub-1 must be 0
* 4. expire message on all subscriptions: backlog for all subscription must be 0
* </pre>
+ *
* @throws Exception
*/
@Test
@@ -1512,14 +1516,13 @@ public class AdminApiTest extends MockedPulsarServiceBaseTest {
// create consumer and subscription
URL pulsarUrl = new URL("http://127.0.0.1" + ":" + BROKER_WEBSERVICE_PORT);
- ClientConfiguration clientConf = new ClientConfiguration();
- clientConf.setStatsInterval(0, TimeUnit.SECONDS);
- PulsarClient client = PulsarClient.create(pulsarUrl.toString(), clientConf);
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setSubscriptionType(SubscriptionType.Shared);
- Consumer consumer1 = client.subscribe("persistent://prop-xyz/use/ns1/ds2", "my-sub1", conf);
- Consumer consumer2 = client.subscribe("persistent://prop-xyz/use/ns1/ds2", "my-sub2", conf);
- Consumer consumer3 = client.subscribe("persistent://prop-xyz/use/ns1/ds2", "my-sub3", conf);
+ PulsarClient client = PulsarClient.builder().serviceUrl(pulsarUrl.toString()).statsInterval(0, TimeUnit.SECONDS)
+ .build();
+ ConsumerBuilder<byte[]> consumerBuilder = client.newConsumer().topic("persistent://prop-xyz/use/ns1/ds2")
+ .subscriptionType(SubscriptionType.Shared);
+ Consumer<byte[]> consumer1 = consumerBuilder.clone().subscriptionName("my-sub1").subscribe();
+ Consumer<byte[]> consumer2 = consumerBuilder.clone().subscriptionName("my-sub2").subscribe();
+ Consumer<byte[]> consumer3 = consumerBuilder.clone().subscriptionName("my-sub3").subscribe();
assertEquals(admin.persistentTopics().getSubscriptions("persistent://prop-xyz/use/ns1/ds2").size(), 3);
@@ -1565,16 +1568,13 @@ public class AdminApiTest extends MockedPulsarServiceBaseTest {
// create consumer and subscription
URL pulsarUrl = new URL("http://127.0.0.1" + ":" + BROKER_WEBSERVICE_PORT);
- ClientConfiguration clientConf = new ClientConfiguration();
- clientConf.setStatsInterval(0, TimeUnit.SECONDS);
- PulsarClient client = PulsarClient.create(pulsarUrl.toString(), clientConf);
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setSubscriptionType(SubscriptionType.Exclusive);
- Consumer consumer = client.subscribe("persistent://prop-xyz/use/ns1/ds1", "my-sub", conf);
-
- ProducerConfiguration prodConf = new ProducerConfiguration();
- prodConf.setMessageRoutingMode(MessageRoutingMode.RoundRobinPartition);
- Producer producer = client.createProducer("persistent://prop-xyz/use/ns1/ds1", prodConf);
+ PulsarClient client = PulsarClient.builder().serviceUrl(pulsarUrl.toString()).statsInterval(0, TimeUnit.SECONDS)
+ .build();
+ Consumer<byte[]> consumer = client.newConsumer().topic("persistent://prop-xyz/use/ns1/ds1")
+ .subscriptionName("my-sub").subscribe();
+
+ Producer<byte[]> producer = client.newProducer().topic("persistent://prop-xyz/use/ns1/ds1")
+ .messageRoutingMode(MessageRoutingMode.RoundRobinPartition).create();
for (int i = 0; i < 10; i++) {
String message = "message-" + i;
producer.send(message.getBytes());
@@ -1624,7 +1624,7 @@ public class AdminApiTest extends MockedPulsarServiceBaseTest {
final int numOfPartitions = 4;
admin.persistentTopics().createPartitionedTopic(topic1, numOfPartitions);
// Create a consumer to get stats on this topic
- pulsarClient.subscribe(topic1, "my-subscriber-name", new ConsumerConfiguration());
+ pulsarClient.newConsumer().topic(topic1).subscriptionName("my-subscriber-name").subscribe();
PersistentTopicsImpl persistent = (PersistentTopicsImpl) admin.persistentTopics();
Field field = PersistentTopicsImpl.class.getDeclaredField("persistentTopics");
@@ -1753,8 +1753,7 @@ public class AdminApiTest extends MockedPulsarServiceBaseTest {
// (1) create a topic
final String topicName = "persistent://prop-xyz/use/getBundleNs/topic1";
String bundleRange = admin.lookups().getBundleRange(topicName);
- assertEquals(bundleRange,
- pulsar.getNamespaceService().getBundle(TopicName.get(topicName)).getBundleRange());
+ assertEquals(bundleRange, pulsar.getNamespaceService().getBundle(TopicName.get(topicName)).getBundleRange());
}
}
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest2.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest2.java
index 711d125..dbc36f3 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest2.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest2.java
@@ -44,13 +44,10 @@ import org.apache.pulsar.broker.service.persistent.PersistentTopic;
import org.apache.pulsar.client.admin.PulsarAdmin;
import org.apache.pulsar.client.admin.PulsarAdminException;
import org.apache.pulsar.client.admin.PulsarAdminException.PreconditionFailedException;
-import org.apache.pulsar.client.api.ClientConfiguration;
import org.apache.pulsar.client.api.Consumer;
-import org.apache.pulsar.client.api.ConsumerConfiguration;
import org.apache.pulsar.client.api.Message;
+import org.apache.pulsar.client.api.MessageRoutingMode;
import org.apache.pulsar.client.api.Producer;
-import org.apache.pulsar.client.api.ProducerConfiguration;
-import org.apache.pulsar.client.api.ProducerConfiguration.MessageRoutingMode;
import org.apache.pulsar.client.api.PulsarClient;
import org.apache.pulsar.client.api.SubscriptionType;
import org.apache.pulsar.client.impl.MessageIdImpl;
@@ -65,8 +62,6 @@ import org.apache.pulsar.common.policies.data.PersistentTopicInternalStats;
import org.apache.pulsar.common.policies.data.PersistentTopicStats;
import org.apache.pulsar.common.policies.data.PropertyAdmin;
import org.apache.pulsar.common.policies.data.RetentionPolicies;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.DataProvider;
@@ -75,13 +70,11 @@ import org.testng.annotations.Test;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
-import static org.apache.pulsar.broker.auth.MockedPulsarServiceBaseTest.retryStrategically;
public class AdminApiTest2 extends MockedPulsarServiceBaseTest {
private MockedPulsarService mockPulsarSetup;
-
@BeforeMethod
@Override
public void setup() throws Exception {
@@ -109,8 +102,7 @@ public class AdminApiTest2 extends MockedPulsarServiceBaseTest {
@DataProvider(name = "topicType")
public Object[][] topicTypeProvider() {
- return new Object[][] { { TopicDomain.persistent.value() },
- { TopicDomain.non_persistent.value() } };
+ return new Object[][] { { TopicDomain.persistent.value() }, { TopicDomain.non_persistent.value() } };
}
@DataProvider(name = "namespaceNames")
@@ -137,8 +129,8 @@ public class AdminApiTest2 extends MockedPulsarServiceBaseTest {
@Test
public void testIncrementPartitionsOfTopic() throws Exception {
final String topicName = "increment-partitionedTopic";
- final String subName1 = topicName + "-my-sub 1";
- final String subName2 = topicName + "-my-sub 2";
+ final String subName1 = topicName + "-my-sub-1";
+ final String subName2 = topicName + "-my-sub-2";
final int startPartitions = 4;
final int newPartitions = 8;
final String partitionedTopicName = "persistent://prop-xyz/use/ns1/" + topicName;
@@ -151,12 +143,12 @@ public class AdminApiTest2 extends MockedPulsarServiceBaseTest {
startPartitions);
// create consumer and subscriptions : check subscriptions
- PulsarClient client = PulsarClient.create(pulsarUrl.toString());
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setSubscriptionType(SubscriptionType.Shared);
- Consumer consumer1 = client.subscribe(partitionedTopicName, subName1, conf);
+ PulsarClient client = PulsarClient.builder().serviceUrl(pulsarUrl.toString()).build();
+ Consumer<byte[]> consumer1 = client.newConsumer().topic(partitionedTopicName).subscriptionName(subName1)
+ .subscriptionType(SubscriptionType.Shared).subscribe();
assertEquals(admin.persistentTopics().getSubscriptions(partitionedTopicName), Lists.newArrayList(subName1));
- Consumer consumer2 = client.subscribe(partitionedTopicName, subName2, conf);
+ Consumer<byte[]> consumer2 = client.newConsumer().topic(partitionedTopicName).subscriptionName(subName2)
+ .subscriptionType(SubscriptionType.Shared).subscribe();
assertEquals(Sets.newHashSet(admin.persistentTopics().getSubscriptions(partitionedTopicName)),
Sets.newHashSet(subName1, subName2));
@@ -172,9 +164,8 @@ public class AdminApiTest2 extends MockedPulsarServiceBaseTest {
.toString();
// (3) produce messages to all partitions including newly created partitions (RoundRobin)
- ProducerConfiguration prodConf = new ProducerConfiguration();
- prodConf.setMessageRoutingMode(MessageRoutingMode.RoundRobinPartition);
- Producer producer = client.createProducer(partitionedTopicName, prodConf);
+ Producer<byte[]> producer = client.newProducer().topic(partitionedTopicName)
+ .messageRoutingMode(MessageRoutingMode.RoundRobinPartition).create();
final int totalMessages = newPartitions * 2;
for (int i = 0; i < totalMessages; i++) {
String message = "message-" + i;
@@ -184,7 +175,8 @@ public class AdminApiTest2 extends MockedPulsarServiceBaseTest {
// (4) verify existing subscription has not lost any message: create new consumer with sub-2: it will load all
// newly created partition topics
consumer2.close();
- consumer2 = client.subscribe(partitionedTopicName, subName2, conf);
+ consumer2 = client.newConsumer().topic(partitionedTopicName).subscriptionName(subName2)
+ .subscriptionType(SubscriptionType.Shared).subscribe();
// sometime: mockZk fails to refresh ml-cache: so, invalidate the cache to get fresh data
pulsar.getLocalZkCacheService().managedLedgerListCache().clearTree();
assertEquals(Sets.newHashSet(admin.persistentTopics().getSubscriptions(newPartitionTopicName)),
@@ -222,10 +214,9 @@ public class AdminApiTest2 extends MockedPulsarServiceBaseTest {
consumer2.close();
}
-
/**
- * verifies admin api command for non-persistent topic.
- * It verifies: partitioned-topic, stats
+ * verifies admin api command for non-persistent topic. It verifies: partitioned-topic, stats
+ *
* @throws Exception
*/
@Test
@@ -238,12 +229,10 @@ public class AdminApiTest2 extends MockedPulsarServiceBaseTest {
// create consumer and subscription
URL pulsarUrl = new URL("http://127.0.0.1" + ":" + BROKER_WEBSERVICE_PORT);
- ClientConfiguration clientConf = new ClientConfiguration();
- clientConf.setStatsInterval(0, TimeUnit.SECONDS);
- PulsarClient client = PulsarClient.create(pulsarUrl.toString(), clientConf);
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setSubscriptionType(SubscriptionType.Exclusive);
- Consumer consumer = client.subscribe(persistentTopicName, "my-sub", conf);
+ PulsarClient client = PulsarClient.builder().serviceUrl(pulsarUrl.toString()).statsInterval(0, TimeUnit.SECONDS)
+ .build();
+ Consumer<byte[]> consumer = client.newConsumer().topic(persistentTopicName).subscriptionName("my-sub")
+ .subscribe();
publishMessagesOnTopic("non-persistent://prop-xyz/use/ns1/" + topicName, 10, 0);
@@ -270,7 +259,7 @@ public class AdminApiTest2 extends MockedPulsarServiceBaseTest {
}
private void publishMessagesOnTopic(String topicName, int messages, int startIdx) throws Exception {
- Producer producer = pulsarClient.createProducer(topicName);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName).create();
for (int i = startIdx; i < (messages + startIdx); i++) {
String message = "message-" + i;
@@ -333,8 +322,8 @@ public class AdminApiTest2 extends MockedPulsarServiceBaseTest {
admin.namespaces().setPersistence(namespace, new PersistencePolicies(3, 3, 3, 50.0));
assertEquals(admin.namespaces().getPersistence(namespace), new PersistencePolicies(3, 3, 3, 50.0));
- Producer producer = pulsarClient.createProducer(topicName);
- Consumer consumer = pulsarClient.subscribe(topicName, "my-sub");
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName).create();
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topicName).subscriptionName("my-sub").subscribe();
PersistentTopic topic = (PersistentTopic) pulsar.getBrokerService().getTopic(topicName).get();
ManagedLedgerImpl managedLedger = (ManagedLedgerImpl) topic.getManagedLedger();
@@ -344,7 +333,7 @@ public class AdminApiTest2 extends MockedPulsarServiceBaseTest {
final int newEnsembleSize = 5;
admin.namespaces().setPersistence(namespace, new PersistencePolicies(newEnsembleSize, 3, 3, newThrottleRate));
- retryStrategically((test) -> managedLedger.getConfig().getEnsembleSize() != newEnsembleSize
+ retryStrategically((test) -> managedLedger.getConfig().getEnsembleSize() == newEnsembleSize
&& cursor.getThrottleMarkDelete() != newThrottleRate, 5, 200);
// (1) verify cursor.markDelete has been updated
@@ -370,7 +359,7 @@ public class AdminApiTest2 extends MockedPulsarServiceBaseTest {
admin.namespaces().createNamespace(namespace);
// create a topic by creating a producer
- Producer producer = pulsarClient.createProducer(topicName);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName).create();
producer.close();
Topic topic = pulsar.getBrokerService().getTopicReference(topicName);
@@ -384,7 +373,7 @@ public class AdminApiTest2 extends MockedPulsarServiceBaseTest {
assertNull(topic);
// recreation of producer will load the topic again
- producer = pulsarClient.createProducer(topicName);
+ producer = pulsarClient.newProducer().topic(topicName).create();
topic = pulsar.getBrokerService().getTopicReference(topicName);
assertNotNull(topic);
// unload the topic
@@ -431,18 +420,17 @@ public class AdminApiTest2 extends MockedPulsarServiceBaseTest {
admin.namespaces().setRetention("prop-xyz/use/ns1", new RetentionPolicies(10, 10));
// create consumer and subscription
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setSubscriptionType(SubscriptionType.Shared);
- Consumer consumer = pulsarClient.subscribe(topicName, "my-sub", conf);
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topicName).subscriptionName("my-sub")
+ .subscriptionType(SubscriptionType.Shared).subscribe();
assertEquals(admin.persistentTopics().getSubscriptions(topicName), Lists.newArrayList("my-sub"));
publishMessagesOnPersistentTopic(topicName, totalProducedMessages, 0);
- List<Message> messages = admin.persistentTopics().peekMessages(topicName, "my-sub", 10);
+ List<Message<byte[]>> messages = admin.persistentTopics().peekMessages(topicName, "my-sub", 10);
assertEquals(messages.size(), 10);
- Message message = null;
+ Message<byte[]> message = null;
MessageIdImpl resetMessageId = null;
int resetPositionId = 10;
for (int i = 0; i < 20; i++) {
@@ -461,7 +449,8 @@ public class AdminApiTest2 extends MockedPulsarServiceBaseTest {
// reset position at resetMessageId
admin.persistentTopics().resetCursor(topicName, "my-sub", messageId);
- consumer = pulsarClient.subscribe(topicName, "my-sub", conf);
+ consumer = pulsarClient.newConsumer().topic(topicName).subscriptionName("my-sub")
+ .subscriptionType(SubscriptionType.Shared).subscribe();
MessageIdImpl msgId2 = (MessageIdImpl) consumer.receive(1, TimeUnit.SECONDS).getMessageId();
assertEquals(resetMessageId, msgId2);
@@ -506,7 +495,7 @@ public class AdminApiTest2 extends MockedPulsarServiceBaseTest {
}
private void publishMessagesOnPersistentTopic(String topicName, int messages, int startIdx) throws Exception {
- Producer producer = pulsarClient.createProducer(topicName);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName).create();
for (int i = startIdx; i < (messages + startIdx); i++) {
String message = "message-" + i;
@@ -719,7 +708,7 @@ public class AdminApiTest2 extends MockedPulsarServiceBaseTest {
Set<String> topicNames = Sets.newHashSet();
for (int i = 0; i < totalTopics; i++) {
topicNames.add(topicName + i);
- Producer producer = pulsarClient.createProducer(topicName + i);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName + i).create();
producer.close();
}
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/CreateSubscriptionTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/CreateSubscriptionTest.java
index c6f277d..052116f 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/CreateSubscriptionTest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/CreateSubscriptionTest.java
@@ -65,7 +65,7 @@ public class CreateSubscriptionTest extends MockedPulsarServiceBaseTest {
assertEquals(admin.persistentTopics().getSubscriptions(topic), Lists.newArrayList("sub-1"));
- Producer p1 = pulsarClient.createProducer(topic);
+ Producer<byte[]> p1 = pulsarClient.newProducer().topic(topic).create();
p1.send("test-1".getBytes());
p1.send("test-2".getBytes());
MessageId m3 = p1.send("test-3".getBytes());
@@ -98,8 +98,7 @@ public class CreateSubscriptionTest extends MockedPulsarServiceBaseTest {
}
for (int i = 0; i < 10; i++) {
- assertEquals(
- admin.persistentTopics().getSubscriptions(TopicName.get(topic).getPartition(i).toString()),
+ assertEquals(admin.persistentTopics().getSubscriptions(TopicName.get(topic).getPartition(i).toString()),
Lists.newArrayList("sub-1"));
}
}
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/IncrementPartitionsTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/IncrementPartitionsTest.java
index e001ba0..60f2044 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/IncrementPartitionsTest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/IncrementPartitionsTest.java
@@ -80,15 +80,14 @@ public class IncrementPartitionsTest extends MockedPulsarServiceBaseTest {
admin.persistentTopics().createPartitionedTopic(partitionedTopicName, 10);
assertEquals(admin.persistentTopics().getPartitionedTopicMetadata(partitionedTopicName).partitions, 10);
- Consumer consumer = pulsarClient.subscribe(partitionedTopicName, "sub-1");
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(partitionedTopicName).subscriptionName("sub-1")
+ .subscribe();
admin.persistentTopics().updatePartitionedTopic(partitionedTopicName, 20);
assertEquals(admin.persistentTopics().getPartitionedTopicMetadata(partitionedTopicName).partitions, 20);
- assertEquals(
- admin.persistentTopics()
- .getSubscriptions(TopicName.get(partitionedTopicName).getPartition(15).toString()),
- Lists.newArrayList("sub-1"));
+ assertEquals(admin.persistentTopics().getSubscriptions(
+ TopicName.get(partitionedTopicName).getPartition(15).toString()), Lists.newArrayList("sub-1"));
consumer.close();
}
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/AntiAffinityNamespaceGroupTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/AntiAffinityNamespaceGroupTest.java
index e7161b2..f43b24e 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/AntiAffinityNamespaceGroupTest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/AntiAffinityNamespaceGroupTest.java
@@ -24,7 +24,6 @@ import static org.testng.Assert.assertNotEquals;
import static org.testng.Assert.assertTrue;
import java.lang.reflect.Field;
-import java.net.InetAddress;
import java.net.URL;
import java.util.Map;
import java.util.Set;
@@ -511,8 +510,9 @@ public class AntiAffinityNamespaceGroupTest {
admin1.namespaces().setNamespaceAntiAffinityGroup(ns, namespaceAntiAffinityGroup);
}
- PulsarClient pulsarClient = PulsarClient.create(pulsar1.getWebServiceAddress());
- Producer producer = pulsarClient.createProducer("persistent://" + namespace + "0/my-topic1");
+ PulsarClient pulsarClient = PulsarClient.builder().serviceUrl(pulsar1.getWebServiceAddress()).build();
+ Producer<byte[]> producer = pulsarClient.newProducer().topic("persistent://" + namespace + "0/my-topic1")
+ .create();
ModularLoadManagerImpl loadManager = (ModularLoadManagerImpl) ((ModularLoadManagerWrapper) pulsar1
.getLoadManager().get()).getLoadManager();
@@ -527,6 +527,7 @@ public class AntiAffinityNamespaceGroupTest {
private boolean isLoadManagerUpdatedDomainCache(ModularLoadManagerImpl loadManager) throws Exception {
Field mapField = ModularLoadManagerImpl.class.getDeclaredField("brokerToFailureDomainMap");
mapField.setAccessible(true);
+ @SuppressWarnings("unchecked")
Map<String, String> map = (Map<String, String>) mapField.get(loadManager);
return !map.isEmpty();
}
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/LoadBalancerTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/LoadBalancerTest.java
index 9ebba22..e0745c4 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/LoadBalancerTest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/LoadBalancerTest.java
@@ -195,6 +195,7 @@ public class LoadBalancerTest {
* those load reports can be deserialized and are in valid format tests if the rankings are populated from the load
* reports are not, both broker will have zero rank
*/
+ @SuppressWarnings("unchecked")
@Test
public void testLoadReportsWrittenOnZK() throws Exception {
ZooKeeper zkc = bkEnsemble.getZkClient();
@@ -289,6 +290,7 @@ public class LoadBalancerTest {
Field ranking = ((SimpleLoadManagerImpl) pulsar.getLoadManager().get()).getClass()
.getDeclaredField("sortedRankings");
ranking.setAccessible(true);
+ @SuppressWarnings("unchecked")
AtomicReference<Map<Long, Set<ResourceUnit>>> sortedRanking = (AtomicReference<Map<Long, Set<ResourceUnit>>>) ranking
.get(pulsar.getLoadManager().get());
return sortedRanking;
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/ModularLoadManagerImplTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/ModularLoadManagerImplTest.java
index 7d36d39..0502d78 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/ModularLoadManagerImplTest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/ModularLoadManagerImplTest.java
@@ -23,8 +23,8 @@ import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertNotEquals;
import static org.testng.Assert.assertFalse;
+import static org.testng.Assert.assertNotEquals;
import static org.testng.Assert.assertTrue;
import java.lang.reflect.Field;
@@ -76,7 +76,6 @@ import org.apache.zookeeper.ZooDefs;
import org.mockito.Mockito;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.testng.Assert;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
@@ -616,5 +615,7 @@ public class ModularLoadManagerImplTest {
} catch (PulsarServerException e) {
//Ok.
}
+
+ pulsar.close();
}
}
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/SimpleLoadManagerImplTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/SimpleLoadManagerImplTest.java
index e26fe34..1771d3d 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/SimpleLoadManagerImplTest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/SimpleLoadManagerImplTest.java
@@ -234,7 +234,7 @@ public class SimpleLoadManagerImplTest {
}
- private void setObjectField(Class objClass, Object objInstance, String fieldName, Object newValue)
+ private void setObjectField(Class<?> objClass, Object objInstance, String fieldName, Object newValue)
throws Exception {
Field field = objClass.getDeclaredField(fieldName);
field.setAccessible(true);
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/namespace/NamespaceServiceTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/namespace/NamespaceServiceTest.java
index 659361c..066693e 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/namespace/NamespaceServiceTest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/namespace/NamespaceServiceTest.java
@@ -45,8 +45,6 @@ import org.apache.bookkeeper.mledger.ManagedLedger;
import org.apache.bookkeeper.util.ZkUtils;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.tuple.Pair;
-import org.apache.pulsar.broker.PulsarService;
-import org.apache.pulsar.broker.cache.LocalZooKeeperCacheService;
import org.apache.pulsar.broker.loadbalance.LoadManager;
import org.apache.pulsar.broker.loadbalance.impl.ModularLoadManagerImpl;
import org.apache.pulsar.broker.loadbalance.impl.ModularLoadManagerWrapper;
@@ -55,19 +53,16 @@ import org.apache.pulsar.broker.service.BrokerTestBase;
import org.apache.pulsar.broker.service.Topic;
import org.apache.pulsar.broker.service.persistent.PersistentTopic;
import org.apache.pulsar.client.api.Consumer;
-import org.apache.pulsar.client.api.ConsumerConfiguration;
-import org.apache.pulsar.common.naming.TopicName;
import org.apache.pulsar.common.naming.NamespaceBundle;
import org.apache.pulsar.common.naming.NamespaceBundleFactory;
import org.apache.pulsar.common.naming.NamespaceBundles;
import org.apache.pulsar.common.naming.NamespaceName;
-import org.apache.pulsar.common.policies.data.LocalPolicies;
+import org.apache.pulsar.common.naming.TopicName;
import org.apache.pulsar.common.policies.data.Policies;
import org.apache.pulsar.common.util.ObjectMapperFactory;
import org.apache.pulsar.common.util.collections.ConcurrentOpenHashMap;
import org.apache.pulsar.policies.data.loadbalancer.LoadReport;
import org.apache.pulsar.policies.data.loadbalancer.LocalBrokerData;
-import org.apache.pulsar.zookeeper.ZooKeeperDataCache;
import org.apache.zookeeper.CreateMode;
import org.apache.zookeeper.ZooDefs;
import org.apache.zookeeper.data.Stat;
@@ -267,8 +262,8 @@ public class NamespaceServiceTest extends BrokerTestBase {
public void testUnloadNamespaceBundleFailure() throws Exception {
final String topicName = "persistent://my-property/use/my-ns/my-topic1";
- ConsumerConfiguration conf = new ConsumerConfiguration();
- Consumer consumer = pulsarClient.subscribe(topicName, "my-subscriber-name", conf);
+ pulsarClient.newConsumer().topic(topicName).subscriptionName("my-subscriber-name").subscribe();
+
ConcurrentOpenHashMap<String, CompletableFuture<Topic>> topics = pulsar.getBrokerService().getTopics();
Topic spyTopic = spy(topics.get(topicName).get());
topics.clear();
@@ -300,15 +295,15 @@ public class NamespaceServiceTest extends BrokerTestBase {
/**
* It verifies that unloading bundle will timeout and will not hung even if one of the topic-unloading stuck.
- *
+ *
* @throws Exception
*/
@Test(timeOut = 6000)
public void testUnloadNamespaceBundleWithStuckTopic() throws Exception {
final String topicName = "persistent://my-property/use/my-ns/my-topic1";
- ConsumerConfiguration conf = new ConsumerConfiguration();
- Consumer consumer = pulsarClient.subscribe(topicName, "my-subscriber-name", conf);
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topicName).subscriptionName("my-subscriber-name")
+ .subscribe();
ConcurrentOpenHashMap<String, CompletableFuture<Topic>> topics = pulsar.getBrokerService().getTopics();
Topic spyTopic = spy(topics.get(topicName).get());
topics.clear();
@@ -335,7 +330,7 @@ public class NamespaceServiceTest extends BrokerTestBase {
}
consumer.close();
}
-
+
/**
* <pre>
* It verifies that namespace service deserialize the load-report based on load-manager which active.
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/namespace/NamespaceUnloadingTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/namespace/NamespaceUnloadingTest.java
index bcd6b76..1da9564 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/namespace/NamespaceUnloadingTest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/namespace/NamespaceUnloadingTest.java
@@ -53,7 +53,8 @@ public class NamespaceUnloadingTest extends BrokerTestBase {
public void testUnloadPartiallyLoadedNamespace() throws Exception {
admin.namespaces().createNamespace("prop/use/ns-test-2", 16);
- Producer producer = pulsarClient.createProducer("persistent://prop/use/ns-test-2/my-topic");
+ Producer<byte[]> producer = pulsarClient.newProducer().topic("persistent://prop/use/ns-test-2/my-topic")
+ .create();
assertTrue(admin.namespaces().getNamespaces("prop", "use").contains("prop/use/ns-test-2"));
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/AddMissingPatchVersionTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/AddMissingPatchVersionTest.java
index bcc589a..14b5dd4 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/AddMissingPatchVersionTest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/AddMissingPatchVersionTest.java
@@ -18,7 +18,6 @@
*/
package org.apache.pulsar.broker.service;
-import org.apache.pulsar.broker.PulsarService;
import org.apache.pulsar.utils.PulsarBrokerVersionStringUtils;
import org.testng.Assert;
import org.testng.annotations.Test;
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BacklogQuotaManagerTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BacklogQuotaManagerTest.java
index f1761d8..80a870c 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BacklogQuotaManagerTest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BacklogQuotaManagerTest.java
@@ -31,11 +31,9 @@ import org.apache.pulsar.broker.PulsarService;
import org.apache.pulsar.broker.ServiceConfiguration;
import org.apache.pulsar.client.admin.PulsarAdmin;
import org.apache.pulsar.client.api.Authentication;
-import org.apache.pulsar.client.api.ClientConfiguration;
import org.apache.pulsar.client.api.Consumer;
import org.apache.pulsar.client.api.Message;
import org.apache.pulsar.client.api.Producer;
-import org.apache.pulsar.client.api.ProducerConfiguration;
import org.apache.pulsar.client.api.PulsarClient;
import org.apache.pulsar.client.api.PulsarClientException;
import org.apache.pulsar.common.policies.data.BacklogQuota;
@@ -129,18 +127,17 @@ public class BacklogQuotaManagerTest {
assertEquals(admin.namespaces().getBacklogQuotaMap("prop/usc/ns-quota"), Maps.newTreeMap());
admin.namespaces().setBacklogQuota("prop/usc/ns-quota",
new BacklogQuota(10 * 1024, BacklogQuota.RetentionPolicy.consumer_backlog_eviction));
- ClientConfiguration clientConf = new ClientConfiguration();
- clientConf.setStatsInterval(0, TimeUnit.SECONDS);
- PulsarClient client = PulsarClient.create(adminUrl.toString(), clientConf);
+ PulsarClient client = PulsarClient.builder().serviceUrl(adminUrl.toString()).statsInterval(0, TimeUnit.SECONDS)
+ .build();
final String topic1 = "persistent://prop/usc/ns-quota/topic1";
final String subName1 = "c1";
final String subName2 = "c2";
final int numMsgs = 20;
- Consumer consumer1 = client.subscribe(topic1, subName1);
- Consumer consumer2 = client.subscribe(topic1, subName2);
- org.apache.pulsar.client.api.Producer producer = client.createProducer(topic1);
+ Consumer<byte[]> consumer1 = client.newConsumer().topic(topic1).subscriptionName(subName1).subscribe();
+ Consumer<byte[]> consumer2 = client.newConsumer().topic(topic1).subscriptionName(subName2).subscribe();
+ org.apache.pulsar.client.api.Producer<byte[]> producer = client.newProducer().topic(topic1).create();
byte[] content = new byte[1024];
for (int i = 0; i < numMsgs; i++) {
producer.send(content);
@@ -161,16 +158,16 @@ public class BacklogQuotaManagerTest {
assertEquals(admin.namespaces().getBacklogQuotaMap("prop/usc/ns-quota"), Maps.newTreeMap());
admin.namespaces().setBacklogQuota("prop/usc/ns-quota",
new BacklogQuota(10 * 1024, BacklogQuota.RetentionPolicy.consumer_backlog_eviction));
- PulsarClient client = PulsarClient.create(adminUrl.toString());
+ PulsarClient client = PulsarClient.builder().serviceUrl(adminUrl.toString()).build();
final String topic1 = "persistent://prop/usc/ns-quota/topic11";
final String subName1 = "c11";
final String subName2 = "c21";
final int numMsgs = 20;
- Consumer consumer1 = client.subscribe(topic1, subName1);
- Consumer consumer2 = client.subscribe(topic1, subName2);
- org.apache.pulsar.client.api.Producer producer = client.createProducer(topic1);
+ Consumer<byte[]> consumer1 = client.newConsumer().topic(topic1).subscriptionName(subName1).subscribe();
+ Consumer<byte[]> consumer2 = client.newConsumer().topic(topic1).subscriptionName(subName2).subscribe();
+ org.apache.pulsar.client.api.Producer<byte[]> producer = client.newProducer().topic(topic1).create();
byte[] content = new byte[1024];
for (int i = 0; i < numMsgs; i++) {
producer.send(content);
@@ -201,18 +198,19 @@ public class BacklogQuotaManagerTest {
final CyclicBarrier barrier = new CyclicBarrier(2);
final CountDownLatch counter = new CountDownLatch(2);
final AtomicBoolean gotException = new AtomicBoolean(false);
- ClientConfiguration clientConf = new ClientConfiguration();
- clientConf.setStatsInterval(0, TimeUnit.SECONDS);
- PulsarClient client = PulsarClient.create(adminUrl.toString(), clientConf);
- PulsarClient client2 = PulsarClient.create(adminUrl.toString(), clientConf);
- Consumer consumer1 = client2.subscribe(topic1, subName1);
- Consumer consumer2 = client2.subscribe(topic1, subName2);
+ PulsarClient client = PulsarClient.builder().serviceUrl(adminUrl.toString()).statsInterval(0, TimeUnit.SECONDS)
+ .build();
+ PulsarClient client2 = PulsarClient.builder().serviceUrl(adminUrl.toString()).statsInterval(0, TimeUnit.SECONDS)
+ .build();
+ Consumer<byte[]> consumer1 = client2.newConsumer().topic(topic1).subscriptionName(subName1).subscribe();
+ Consumer<byte[]> consumer2 = client2.newConsumer().topic(topic1).subscriptionName(subName2).subscribe();
Thread producerThread = new Thread() {
public void run() {
try {
barrier.await();
- final org.apache.pulsar.client.api.Producer producer = client.createProducer(topic1);
+ org.apache.pulsar.client.api.Producer<byte[]> producer = client.newProducer().topic(topic1)
+ .create();
byte[] content = new byte[1024];
for (int i = 0; i < numMsgs; i++) {
producer.send(content);
@@ -272,19 +270,20 @@ public class BacklogQuotaManagerTest {
final CyclicBarrier barrier = new CyclicBarrier(2);
final CountDownLatch counter = new CountDownLatch(2);
final AtomicBoolean gotException = new AtomicBoolean(false);
- final ClientConfiguration clientConf = new ClientConfiguration();
- clientConf.setStatsInterval(0, TimeUnit.SECONDS);
- final PulsarClient client = PulsarClient.create(adminUrl.toString(), clientConf);
+ final PulsarClient client = PulsarClient.builder().serviceUrl(adminUrl.toString())
+ .statsInterval(0, TimeUnit.SECONDS).build();
- final Consumer consumer1 = client.subscribe(topic1, subName1);
- final Consumer consumer2 = client.subscribe(topic1, subName2);
- final PulsarClient client2 = PulsarClient.create(adminUrl.toString(), clientConf);
+ final Consumer<byte[]> consumer1 = client.newConsumer().topic(topic1).subscriptionName(subName1).subscribe();
+ final Consumer<byte[]> consumer2 = client.newConsumer().topic(topic1).subscriptionName(subName2).subscribe();
+ final PulsarClient client2 = PulsarClient.builder().serviceUrl(adminUrl.toString())
+ .statsInterval(0, TimeUnit.SECONDS).build();
Thread producerThread = new Thread() {
public void run() {
try {
barrier.await();
- org.apache.pulsar.client.api.Producer producer = client2.createProducer(topic1);
+ org.apache.pulsar.client.api.Producer<byte[]> producer = client2.newProducer().topic(topic1)
+ .create();
byte[] content = new byte[1024];
for (int i = 0; i < numMsgs; i++) {
producer.send(content);
@@ -336,20 +335,22 @@ public class BacklogQuotaManagerTest {
final CyclicBarrier barrier = new CyclicBarrier(4);
final CountDownLatch counter = new CountDownLatch(4);
final AtomicBoolean gotException = new AtomicBoolean(false);
- final ClientConfiguration clientConf = new ClientConfiguration();
- clientConf.setStatsInterval(0, TimeUnit.SECONDS);
- final PulsarClient client = PulsarClient.create(adminUrl.toString(), clientConf);
+ final PulsarClient client = PulsarClient.builder().serviceUrl(adminUrl.toString())
+ .statsInterval(0, TimeUnit.SECONDS).build();
- final Consumer consumer1 = client.subscribe(topic1, subName1);
- final Consumer consumer2 = client.subscribe(topic1, subName2);
- final PulsarClient client3 = PulsarClient.create(adminUrl.toString(), clientConf);
- final PulsarClient client2 = PulsarClient.create(adminUrl.toString(), clientConf);
+ final Consumer<byte[]> consumer1 = client.newConsumer().topic(topic1).subscriptionName(subName1).subscribe();
+ final Consumer<byte[]> consumer2 = client.newConsumer().topic(topic1).subscriptionName(subName2).subscribe();
+ final PulsarClient client3 = PulsarClient.builder().serviceUrl(adminUrl.toString())
+ .statsInterval(0, TimeUnit.SECONDS).build();
+ final PulsarClient client2 = PulsarClient.builder().serviceUrl(adminUrl.toString())
+ .statsInterval(0, TimeUnit.SECONDS).build();
Thread producerThread1 = new Thread() {
public void run() {
try {
barrier.await();
- org.apache.pulsar.client.api.Producer producer = client2.createProducer(topic1);
+ org.apache.pulsar.client.api.Producer<byte[]> producer = client2.newProducer().topic(topic1)
+ .create();
byte[] content = new byte[1024];
for (int i = 0; i < numMsgs; i++) {
producer.send(content);
@@ -367,7 +368,8 @@ public class BacklogQuotaManagerTest {
public void run() {
try {
barrier.await();
- org.apache.pulsar.client.api.Producer producer = client3.createProducer(topic1);
+ org.apache.pulsar.client.api.Producer<byte[]> producer = client3.newProducer().topic(topic1)
+ .create();
byte[] content = new byte[1024];
for (int i = 0; i < numMsgs; i++) {
producer.send(content);
@@ -432,19 +434,16 @@ public class BacklogQuotaManagerTest {
assertEquals(admin.namespaces().getBacklogQuotaMap("prop/usc/quotahold"), Maps.newTreeMap());
admin.namespaces().setBacklogQuota("prop/usc/quotahold",
new BacklogQuota(10 * 1024, BacklogQuota.RetentionPolicy.producer_request_hold));
- final ClientConfiguration clientConf = new ClientConfiguration();
- clientConf.setStatsInterval(0, TimeUnit.SECONDS);
- final PulsarClient client = PulsarClient.create(adminUrl.toString(), clientConf);
+ final PulsarClient client = PulsarClient.builder().serviceUrl(adminUrl.toString())
+ .statsInterval(0, TimeUnit.SECONDS).build();
final String topic1 = "persistent://prop/usc/quotahold/hold";
final String subName1 = "c1hold";
final int numMsgs = 10;
- Consumer consumer = client.subscribe(topic1, subName1);
- ProducerConfiguration producerConfiguration = new ProducerConfiguration();
- producerConfiguration.setSendTimeout(2, TimeUnit.SECONDS);
+ Consumer<byte[]> consumer = client.newConsumer().topic(topic1).subscriptionName(subName1).subscribe();
byte[] content = new byte[1024];
- Producer producer = client.createProducer(topic1, producerConfiguration);
+ Producer<byte[]> producer = client.newProducer().topic(topic1).sendTimeout(2, TimeUnit.SECONDS).create();
for (int i = 0; i <= numMsgs; i++) {
try {
producer.send(content);
@@ -473,19 +472,16 @@ public class BacklogQuotaManagerTest {
assertEquals(admin.namespaces().getBacklogQuotaMap("prop/usc/quotahold"), Maps.newTreeMap());
admin.namespaces().setBacklogQuota("prop/usc/quotahold",
new BacklogQuota(10 * 1024, BacklogQuota.RetentionPolicy.producer_request_hold));
- final ClientConfiguration clientConf = new ClientConfiguration();
- clientConf.setStatsInterval(0, TimeUnit.SECONDS);
- final PulsarClient client = PulsarClient.create(adminUrl.toString(), clientConf);
+ final PulsarClient client = PulsarClient.builder().serviceUrl(adminUrl.toString())
+ .statsInterval(0, TimeUnit.SECONDS).build();
final String topic1 = "persistent://prop/usc/quotahold/holdtimeout";
final String subName1 = "c1holdtimeout";
boolean gotException = false;
- client.subscribe(topic1, subName1);
- ProducerConfiguration producerConfiguration = new ProducerConfiguration();
- producerConfiguration.setSendTimeout(2, TimeUnit.SECONDS);
+ client.newConsumer().topic(topic1).subscriptionName(subName1).subscribe();
byte[] content = new byte[1024];
- Producer producer = client.createProducer(topic1, producerConfiguration);
+ Producer<byte[]> producer = client.newProducer().topic(topic1).sendTimeout(2, TimeUnit.SECONDS).create();
for (int i = 0; i < 10; i++) {
producer.send(content);
}
@@ -510,19 +506,16 @@ public class BacklogQuotaManagerTest {
assertEquals(admin.namespaces().getBacklogQuotaMap("prop/usc/quotahold"), Maps.newTreeMap());
admin.namespaces().setBacklogQuota("prop/usc/quotahold",
new BacklogQuota(10 * 1024, BacklogQuota.RetentionPolicy.producer_exception));
- final ClientConfiguration clientConf = new ClientConfiguration();
- clientConf.setStatsInterval(0, TimeUnit.SECONDS);
- final PulsarClient client = PulsarClient.create(adminUrl.toString(), clientConf);
+ final PulsarClient client = PulsarClient.builder().serviceUrl(adminUrl.toString())
+ .statsInterval(0, TimeUnit.SECONDS).build();
final String topic1 = "persistent://prop/usc/quotahold/except";
final String subName1 = "c1except";
boolean gotException = false;
- client.subscribe(topic1, subName1);
- ProducerConfiguration producerConfiguration = new ProducerConfiguration();
- producerConfiguration.setSendTimeout(2, TimeUnit.SECONDS);
+ client.newConsumer().topic(topic1).subscriptionName(subName1).subscribe();
byte[] content = new byte[1024];
- Producer producer = client.createProducer(topic1, producerConfiguration);
+ Producer<byte[]> producer = client.newProducer().topic(topic1).sendTimeout(2, TimeUnit.SECONDS).create();
for (int i = 0; i < 10; i++) {
producer.send(content);
}
@@ -549,19 +542,16 @@ public class BacklogQuotaManagerTest {
assertEquals(admin.namespaces().getBacklogQuotaMap("prop/usc/quotahold"), Maps.newTreeMap());
admin.namespaces().setBacklogQuota("prop/usc/quotahold",
new BacklogQuota(10 * 1024, BacklogQuota.RetentionPolicy.producer_exception));
- final ClientConfiguration clientConf = new ClientConfiguration();
- clientConf.setStatsInterval(0, TimeUnit.SECONDS);
- final PulsarClient client = PulsarClient.create(adminUrl.toString(), clientConf);
+ final PulsarClient client = PulsarClient.builder().serviceUrl(adminUrl.toString())
+ .statsInterval(0, TimeUnit.SECONDS).build();
final String topic1 = "persistent://prop/usc/quotahold/exceptandunblock";
final String subName1 = "c1except";
boolean gotException = false;
- Consumer consumer = client.subscribe(topic1, subName1);
- ProducerConfiguration producerConfiguration = new ProducerConfiguration();
- producerConfiguration.setSendTimeout(2, TimeUnit.SECONDS);
+ Consumer<byte[]> consumer = client.newConsumer().topic(topic1).subscriptionName(subName1).subscribe();
byte[] content = new byte[1024];
- Producer producer = client.createProducer(topic1, producerConfiguration);
+ Producer<byte[]> producer = client.newProducer().topic(topic1).sendTimeout(2, TimeUnit.SECONDS).create();
for (int i = 0; i < 10; i++) {
producer.send(content);
}
@@ -586,7 +576,7 @@ public class BacklogQuotaManagerTest {
int backlog = (int) stats.subscriptions.get(subName1).msgBacklog;
for (int i = 0; i < backlog; i++) {
- Message msg = consumer.receive();
+ Message<?> msg = consumer.receive();
consumer.acknowledge(msg);
}
Thread.sleep((TIME_TO_CHECK_BACKLOG_QUOTA + 1) * 1000);
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BatchMessageTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BatchMessageTest.java
index b34e7d3..2d7c7ae 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BatchMessageTest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BatchMessageTest.java
@@ -37,12 +37,10 @@ import org.apache.pulsar.broker.service.persistent.PersistentDispatcherMultipleC
import org.apache.pulsar.broker.service.persistent.PersistentTopic;
import org.apache.pulsar.client.api.CompressionType;
import org.apache.pulsar.client.api.Consumer;
-import org.apache.pulsar.client.api.ConsumerConfiguration;
import org.apache.pulsar.client.api.Message;
import org.apache.pulsar.client.api.MessageBuilder;
import org.apache.pulsar.client.api.MessageId;
import org.apache.pulsar.client.api.Producer;
-import org.apache.pulsar.client.api.ProducerConfiguration;
import org.apache.pulsar.client.api.SubscriptionType;
import org.apache.pulsar.client.impl.ConsumerImpl;
import org.apache.pulsar.common.util.FutureUtil;
@@ -82,20 +80,18 @@ public class BatchMessageTest extends BrokerTestBase {
final String topicName = "persistent://prop/use/ns-abc/testSimpleBatchProducerWithFixedBatchSize";
final String subscriptionName = "sub-1" + compressionType.toString();
- Consumer consumer = pulsarClient.subscribe(topicName, subscriptionName);
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topicName).subscriptionName(subscriptionName)
+ .subscribe();
consumer.close();
- ProducerConfiguration producerConf = new ProducerConfiguration();
- producerConf.setCompressionType(compressionType);
- producerConf.setBatchingMaxPublishDelay(5000, TimeUnit.MILLISECONDS);
- producerConf.setBatchingMaxMessages(numMsgsInBatch);
- producerConf.setBatchingEnabled(true);
- Producer producer = pulsarClient.createProducer(topicName, producerConf);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName).compressionType(compressionType)
+ .batchingMaxPublishDelay(5, TimeUnit.SECONDS).batchingMaxMessages(numMsgsInBatch).enableBatching(true)
+ .create();
List<CompletableFuture<MessageId>> sendFutureList = Lists.newArrayList();
for (int i = 0; i < numMsgs; i++) {
byte[] message = ("my-message-" + i).getBytes();
- Message msg = MessageBuilder.create().setContent(message).build();
+ Message<byte[]> msg = MessageBuilder.create().setContent(message).build();
sendFutureList.add(producer.sendAsync(msg));
}
FutureUtil.waitForAll(sendFutureList).get();
@@ -107,10 +103,10 @@ public class BatchMessageTest extends BrokerTestBase {
// we expect 2 messages in the backlog since we sent 50 messages with the batch size set to 25. We have set the
// batch time high enough for it to not affect the number of messages in the batch
assertEquals(topic.getSubscription(subscriptionName).getNumberOfEntriesInBacklog(), 2);
- consumer = pulsarClient.subscribe(topicName, subscriptionName);
+ consumer = pulsarClient.newConsumer().topic(topicName).subscriptionName(subscriptionName).subscribe();
for (int i = 0; i < numMsgs; i++) {
- Message msg = consumer.receive(5, TimeUnit.SECONDS);
+ Message<byte[]> msg = consumer.receive(5, TimeUnit.SECONDS);
assertNotNull(msg);
String receivedMessage = new String(msg.getData());
String expectedMessage = "my-message-" + i;
@@ -127,14 +123,12 @@ public class BatchMessageTest extends BrokerTestBase {
final String topicName = "persistent://prop/use/ns-abc/testSimpleBatchProducerWithFixedBatchTime";
final String subscriptionName = "time-sub-1" + compressionType.toString();
- Consumer consumer = pulsarClient.subscribe(topicName, subscriptionName);
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topicName).subscriptionName(subscriptionName)
+ .subscribe();
consumer.close();
- ProducerConfiguration producerConf = new ProducerConfiguration();
- producerConf.setCompressionType(compressionType);
- producerConf.setBatchingMaxPublishDelay(10, TimeUnit.MILLISECONDS);
- producerConf.setBatchingEnabled(true);
- Producer producer = pulsarClient.createProducer(topicName, producerConf);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName).compressionType(compressionType)
+ .batchingMaxPublishDelay(10, TimeUnit.MILLISECONDS).enableBatching(true).create();
Random random = new Random();
List<CompletableFuture<MessageId>> sendFutureList = Lists.newArrayList();
@@ -142,7 +136,7 @@ public class BatchMessageTest extends BrokerTestBase {
// put a random sleep from 0 to 3 ms
Thread.sleep(random.nextInt(4));
byte[] message = ("msg-" + i).getBytes();
- Message msg = MessageBuilder.create().setContent(message).build();
+ Message<byte[]> msg = MessageBuilder.create().setContent(message).build();
sendFutureList.add(producer.sendAsync(msg));
}
FutureUtil.waitForAll(sendFutureList).get();
@@ -164,15 +158,13 @@ public class BatchMessageTest extends BrokerTestBase {
final String topicName = "persistent://prop/use/ns-abc/testSimpleBatchProducerWithFixedBatchSizeAndTime";
final String subscriptionName = "time-size-sub-1" + compressionType.toString();
- Consumer consumer = pulsarClient.subscribe(topicName, subscriptionName);
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topicName).subscriptionName(subscriptionName)
+ .subscribe();
consumer.close();
- ProducerConfiguration producerConf = new ProducerConfiguration();
- producerConf.setBatchingMaxPublishDelay(10, TimeUnit.MILLISECONDS);
- producerConf.setBatchingMaxMessages(5);
- producerConf.setCompressionType(compressionType);
- producerConf.setBatchingEnabled(true);
- Producer producer = pulsarClient.createProducer(topicName, producerConf);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName)
+ .batchingMaxPublishDelay(10, TimeUnit.MILLISECONDS).batchingMaxMessages(5)
+ .compressionType(compressionType).enableBatching(true).create();
Random random = new Random();
List<CompletableFuture<MessageId>> sendFutureList = Lists.newArrayList();
@@ -180,7 +172,7 @@ public class BatchMessageTest extends BrokerTestBase {
// put a random sleep from 0 to 3 ms
Thread.sleep(random.nextInt(4));
byte[] message = ("msg-" + i).getBytes();
- Message msg = MessageBuilder.create().setContent(message).build();
+ Message<byte[]> msg = MessageBuilder.create().setContent(message).build();
sendFutureList.add(producer.sendAsync(msg));
}
FutureUtil.waitForAll(sendFutureList).get();
@@ -203,31 +195,29 @@ public class BatchMessageTest extends BrokerTestBase {
final String topicName = "persistent://prop/use/finance/testBatchProducerWithLargeMessage";
final String subscriptionName = "large-message-sub-1" + compressionType.toString();
- Consumer consumer = pulsarClient.subscribe(topicName, subscriptionName);
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topicName).subscriptionName(subscriptionName)
+ .subscribe();
consumer.close();
- ProducerConfiguration producerConf = new ProducerConfiguration();
- producerConf.setCompressionType(compressionType);
- producerConf.setBatchingMaxPublishDelay(5000, TimeUnit.MILLISECONDS);
- producerConf.setBatchingMaxMessages(numMsgsInBatch);
- producerConf.setBatchingEnabled(true);
- Producer producer = pulsarClient.createProducer(topicName, producerConf);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName).compressionType(compressionType)
+ .batchingMaxPublishDelay(5, TimeUnit.SECONDS).batchingMaxMessages(numMsgsInBatch).enableBatching(true)
+ .create();
List<CompletableFuture<MessageId>> sendFutureList = Lists.newArrayList();
for (int i = 0; i < numMsgs; i++) {
if (i == 25) {
// send a large message
byte[] largeMessage = new byte[128 * 1024 + 4];
- Message msg = MessageBuilder.create().setContent(largeMessage).build();
+ Message<byte[]> msg = MessageBuilder.create().setContent(largeMessage).build();
sendFutureList.add(producer.sendAsync(msg));
} else {
byte[] message = ("msg-" + i).getBytes();
- Message msg = MessageBuilder.create().setContent(message).build();
+ Message<byte[]> msg = MessageBuilder.create().setContent(message).build();
sendFutureList.add(producer.sendAsync(msg));
}
}
byte[] message = ("msg-" + "last").getBytes();
- Message lastMsg = MessageBuilder.create().setContent(message).build();
+ Message<byte[]> lastMsg = MessageBuilder.create().setContent(message).build();
sendFutureList.add(producer.sendAsync(lastMsg));
FutureUtil.waitForAll(sendFutureList).get();
@@ -239,10 +229,10 @@ public class BatchMessageTest extends BrokerTestBase {
// we expect 3 messages in the backlog since the large message in the middle should
// close out the batch and be sent in a batch of its own
assertEquals(topic.getSubscription(subscriptionName).getNumberOfEntriesInBacklog(), 3);
- consumer = pulsarClient.subscribe(topicName, subscriptionName);
+ consumer = pulsarClient.newConsumer().topic(topicName).subscriptionName(subscriptionName).subscribe();
for (int i = 0; i <= numMsgs; i++) {
- Message msg = consumer.receive(5, TimeUnit.SECONDS);
+ Message<byte[]> msg = consumer.receive(5, TimeUnit.SECONDS);
assertNotNull(msg);
LOG.info("received msg - {}", msg.getData().toString());
consumer.acknowledge(msg);
@@ -260,20 +250,18 @@ public class BatchMessageTest extends BrokerTestBase {
final String topicName = "persistent://prop/use/ns-abc/testSimpleBatchProducerConsumer";
final String subscriptionName = "pc-sub-1" + compressionType.toString();
- Consumer consumer = pulsarClient.subscribe(topicName, subscriptionName);
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topicName).subscriptionName(subscriptionName)
+ .subscribe();
consumer.close();
- ProducerConfiguration producerConf = new ProducerConfiguration();
- producerConf.setCompressionType(compressionType);
- producerConf.setBatchingMaxPublishDelay(5000, TimeUnit.MILLISECONDS);
- producerConf.setBatchingMaxMessages(numMsgsInBatch);
- producerConf.setBatchingEnabled(true);
- Producer producer = pulsarClient.createProducer(topicName, producerConf);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName).compressionType(compressionType)
+ .batchingMaxPublishDelay(5, TimeUnit.SECONDS).batchingMaxMessages(numMsgsInBatch).enableBatching(true)
+ .create();
List<CompletableFuture<MessageId>> sendFutureList = Lists.newArrayList();
for (int i = 0; i < numMsgs; i++) {
byte[] message = ("msg-" + i).getBytes();
- Message msg = MessageBuilder.create().setContent(message).build();
+ Message<byte[]> msg = MessageBuilder.create().setContent(message).build();
sendFutureList.add(producer.sendAsync(msg));
}
FutureUtil.waitForAll(sendFutureList).get();
@@ -282,13 +270,12 @@ public class BatchMessageTest extends BrokerTestBase {
rolloverPerIntervalStats();
assertTrue(topic.getProducers().values().iterator().next().getStats().msgRateIn > 0.0);
- assertEquals(topic.getSubscription(subscriptionName).getNumberOfEntriesInBacklog(),
- numMsgs / numMsgsInBatch);
- consumer = pulsarClient.subscribe(topicName, subscriptionName);
+ assertEquals(topic.getSubscription(subscriptionName).getNumberOfEntriesInBacklog(), numMsgs / numMsgsInBatch);
+ consumer = pulsarClient.newConsumer().topic(topicName).subscriptionName(subscriptionName).subscribe();
- Message lastunackedMsg = null;
+ Message<byte[]> lastunackedMsg = null;
for (int i = 0; i < numMsgs; i++) {
- Message msg = consumer.receive(5, TimeUnit.SECONDS);
+ Message<byte[]> msg = consumer.receive(5, TimeUnit.SECONDS);
assertNotNull(msg);
if (i % 2 == 0) {
consumer.acknowledgeCumulative(msg);
@@ -312,18 +299,17 @@ public class BatchMessageTest extends BrokerTestBase {
final String topicName = "persistent://prop/use/ns-abc/testSimpleBatchSyncProducerWithFixedBatchSize";
final String subscriptionName = "syncsub-1";
- Consumer consumer = pulsarClient.subscribe(topicName, subscriptionName);
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topicName).subscriptionName(subscriptionName)
+ .subscribe();
consumer.close();
- ProducerConfiguration producerConf = new ProducerConfiguration();
- producerConf.setBatchingMaxPublishDelay(1000, TimeUnit.MILLISECONDS);
- producerConf.setBatchingMaxMessages(numMsgsInBatch);
- producerConf.setBatchingEnabled(true);
- Producer producer = pulsarClient.createProducer(topicName, producerConf);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName)
+ .batchingMaxPublishDelay(1, TimeUnit.SECONDS).batchingMaxMessages(numMsgsInBatch).enableBatching(true)
+ .create();
for (int i = 0; i < numMsgs; i++) {
byte[] message = ("my-message-" + i).getBytes();
- Message msg = MessageBuilder.create().setContent(message).build();
+ Message<byte[]> msg = MessageBuilder.create().setContent(message).build();
producer.send(msg);
}
@@ -334,10 +320,10 @@ public class BatchMessageTest extends BrokerTestBase {
// we expect 10 messages in the backlog since we sent 10 messages with the batch size set to 5.
// However, we are using synchronous send and so each message will go as an individual message
assertEquals(topic.getSubscription(subscriptionName).getNumberOfEntriesInBacklog(), 10);
- consumer = pulsarClient.subscribe(topicName, subscriptionName);
+ consumer = pulsarClient.newConsumer().topic(topicName).subscriptionName(subscriptionName).subscribe();
for (int i = 0; i < numMsgs; i++) {
- Message msg = consumer.receive(5, TimeUnit.SECONDS);
+ Message<byte[]> msg = consumer.receive(5, TimeUnit.SECONDS);
assertNotNull(msg);
String receivedMessage = new String(msg.getData());
String expectedMessage = "my-message-" + i;
@@ -356,20 +342,18 @@ public class BatchMessageTest extends BrokerTestBase {
final String topicName = "persistent://prop/use/ns-abc/testSimpleBatchProducerConsumer1kMessages";
final String subscriptionName = "pc1k-sub-1";
- Consumer consumer = pulsarClient.subscribe(topicName, subscriptionName);
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topicName).subscriptionName(subscriptionName)
+ .subscribe();
consumer.close();
- ProducerConfiguration producerConf = new ProducerConfiguration();
- producerConf.setMaxPendingMessages(numMsgs + 1);
- producerConf.setBatchingMaxPublishDelay(30000, TimeUnit.MILLISECONDS);
- producerConf.setBatchingMaxMessages(numMsgsInBatch);
- producerConf.setBatchingEnabled(true);
- Producer producer = pulsarClient.createProducer(topicName, producerConf);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName).maxPendingMessages(numMsgs + 1)
+ .batchingMaxPublishDelay(30, TimeUnit.SECONDS).batchingMaxMessages(numMsgsInBatch).enableBatching(true)
+ .create();
List<CompletableFuture<MessageId>> sendFutureList = Lists.newArrayList();
for (int i = 0; i < numMsgs; i++) {
byte[] message = ("msg-" + i).getBytes();
- Message msg = MessageBuilder.create().setContent(message).build();
+ Message<byte[]> msg = MessageBuilder.create().setContent(message).build();
sendFutureList.add(producer.sendAsync(msg));
}
FutureUtil.waitForAll(sendFutureList).get();
@@ -391,13 +375,12 @@ public class BatchMessageTest extends BrokerTestBase {
Thread.sleep(5000);
LOG.info("[{}] checking backlog stats..");
rolloverPerIntervalStats();
- assertEquals(topic.getSubscription(subscriptionName).getNumberOfEntriesInBacklog(),
- numMsgs / numMsgsInBatch);
- consumer = pulsarClient.subscribe(topicName, subscriptionName);
+ assertEquals(topic.getSubscription(subscriptionName).getNumberOfEntriesInBacklog(), numMsgs / numMsgsInBatch);
+ consumer = pulsarClient.newConsumer().topic(topicName).subscriptionName(subscriptionName).subscribe();
- Message lastunackedMsg = null;
+ Message<byte[]> lastunackedMsg = null;
for (int i = 0; i < numMsgs; i++) {
- Message msg = consumer.receive(1, TimeUnit.SECONDS);
+ Message<byte[]> msg = consumer.receive(1, TimeUnit.SECONDS);
assertNotNull(msg);
lastunackedMsg = msg;
}
@@ -423,19 +406,18 @@ public class BatchMessageTest extends BrokerTestBase {
final String topicName = "persistent://prop/use/ns-abc/testOutOfOrderAcksForBatchMessage";
final String subscriptionName = "oooack-sub-1";
- Consumer consumer = pulsarClient.subscribe(topicName, subscriptionName);
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topicName).subscriptionName(subscriptionName)
+ .subscribe();
consumer.close();
- ProducerConfiguration producerConf = new ProducerConfiguration();
- producerConf.setBatchingMaxPublishDelay(5000, TimeUnit.MILLISECONDS);
- producerConf.setBatchingMaxMessages(numMsgsInBatch);
- producerConf.setBatchingEnabled(true);
- Producer producer = pulsarClient.createProducer(topicName, producerConf);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName)
+ .batchingMaxPublishDelay(5, TimeUnit.SECONDS).batchingMaxMessages(numMsgsInBatch).enableBatching(true)
+ .create();
List<CompletableFuture<MessageId>> sendFutureList = Lists.newArrayList();
for (int i = 0; i < numMsgs; i++) {
byte[] message = ("msg-" + i).getBytes();
- Message msg = MessageBuilder.create().setContent(message).build();
+ Message<byte[]> msg = MessageBuilder.create().setContent(message).build();
sendFutureList.add(producer.sendAsync(msg));
}
FutureUtil.waitForAll(sendFutureList).get();
@@ -443,16 +425,15 @@ public class BatchMessageTest extends BrokerTestBase {
PersistentTopic topic = (PersistentTopic) pulsar.getBrokerService().getTopicReference(topicName);
rolloverPerIntervalStats();
- assertEquals(topic.getSubscription(subscriptionName).getNumberOfEntriesInBacklog(),
- numMsgs / numMsgsInBatch);
- consumer = pulsarClient.subscribe(topicName, subscriptionName);
+ assertEquals(topic.getSubscription(subscriptionName).getNumberOfEntriesInBacklog(), numMsgs / numMsgsInBatch);
+ consumer = pulsarClient.newConsumer().topic(topicName).subscriptionName(subscriptionName).subscribe();
Set<Integer> individualAcks = new HashSet<>();
for (int i = 15; i < 20; i++) {
individualAcks.add(i);
}
- Message lastunackedMsg = null;
+ Message<byte[]> lastunackedMsg = null;
for (int i = 0; i < numMsgs; i++) {
- Message msg = consumer.receive(5, TimeUnit.SECONDS);
+ Message<byte[]> msg = consumer.receive(5, TimeUnit.SECONDS);
LOG.info("received message {}", String.valueOf(msg.getData()));
assertNotNull(msg);
if (i == 8) {
@@ -491,28 +472,27 @@ public class BatchMessageTest extends BrokerTestBase {
final String topicName = "persistent://prop/use/ns-abc/testNonBatchCumulativeAckAfterBatchPublish";
final String subscriptionName = "nbcaabp-sub-1";
- Consumer consumer = pulsarClient.subscribe(topicName, subscriptionName);
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topicName).subscriptionName(subscriptionName)
+ .subscribe();
consumer.close();
- ProducerConfiguration producerConf = new ProducerConfiguration();
- producerConf.setBatchingMaxPublishDelay(5000, TimeUnit.MILLISECONDS);
- producerConf.setBatchingMaxMessages(numMsgsInBatch);
- producerConf.setBatchingEnabled(true);
- Producer producer = pulsarClient.createProducer(topicName, producerConf);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName)
+ .batchingMaxPublishDelay(5, TimeUnit.SECONDS).batchingMaxMessages(numMsgsInBatch).enableBatching(true)
+ .create();
// create producer to publish non batch messages
- Producer noBatchProducer = pulsarClient.createProducer(topicName);
+ Producer<byte[]> noBatchProducer = pulsarClient.newProducer().topic(topicName).create();
List<CompletableFuture<MessageId>> sendFutureList = Lists.newArrayList();
for (int i = 0; i < numMsgs; i++) {
byte[] message = ("msg-" + i).getBytes();
- Message msg = MessageBuilder.create().setContent(message).build();
+ Message<byte[]> msg = MessageBuilder.create().setContent(message).build();
sendFutureList.add(producer.sendAsync(msg));
}
FutureUtil.waitForAll(sendFutureList).get();
sendFutureList.clear();
byte[] nobatchmsg = ("nobatch").getBytes();
- Message nmsg = MessageBuilder.create().setContent(nobatchmsg).build();
+ Message<byte[]> nmsg = MessageBuilder.create().setContent(nobatchmsg).build();
noBatchProducer.sendAsync(nmsg).get();
PersistentTopic topic = (PersistentTopic) pulsar.getBrokerService().getTopicReference(topicName);
@@ -520,11 +500,11 @@ public class BatchMessageTest extends BrokerTestBase {
rolloverPerIntervalStats();
assertTrue(topic.getProducers().values().iterator().next().getStats().msgRateIn > 0.0);
assertEquals(topic.getSubscription(subscriptionName).getNumberOfEntriesInBacklog(), 2);
- consumer = pulsarClient.subscribe(topicName, subscriptionName);
+ consumer = pulsarClient.newConsumer().topic(topicName).subscriptionName(subscriptionName).subscribe();
- Message lastunackedMsg = null;
+ Message<byte[]> lastunackedMsg = null;
for (int i = 0; i <= numMsgs; i++) {
- Message msg = consumer.receive(5, TimeUnit.SECONDS);
+ Message<byte[]> msg = consumer.receive(5, TimeUnit.SECONDS);
assertNotNull(msg);
lastunackedMsg = msg;
}
@@ -534,7 +514,7 @@ public class BatchMessageTest extends BrokerTestBase {
Thread.sleep(100);
rolloverPerIntervalStats();
assertEquals(topic.getSubscription(subscriptionName).getNumberOfEntriesInBacklog(), 0);
- assertTrue(((ConsumerImpl) consumer).isBatchingAckTrackerEmpty());
+ assertTrue(((ConsumerImpl<byte[]>) consumer).isBatchingAckTrackerEmpty());
consumer.close();
producer.close();
noBatchProducer.close();
@@ -547,21 +527,20 @@ public class BatchMessageTest extends BrokerTestBase {
final String topicName = "persistent://prop/use/ns-abc/testBatchAndNonBatchCumulativeAcks";
final String subscriptionName = "bnb-sub-1";
- Consumer consumer = pulsarClient.subscribe(topicName, subscriptionName);
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topicName).subscriptionName(subscriptionName)
+ .subscribe();
consumer.close();
- ProducerConfiguration producerConf = new ProducerConfiguration();
- producerConf.setBatchingMaxPublishDelay(5000, TimeUnit.MILLISECONDS);
- producerConf.setBatchingMaxMessages(numMsgsInBatch);
- producerConf.setBatchingEnabled(true);
- Producer producer = pulsarClient.createProducer(topicName, producerConf);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName)
+ .batchingMaxPublishDelay(5, TimeUnit.SECONDS).batchingMaxMessages(numMsgsInBatch).enableBatching(true)
+ .create();
// create producer to publish non batch messages
- Producer noBatchProducer = pulsarClient.createProducer(topicName);
+ Producer<byte[]> noBatchProducer = pulsarClient.newProducer().topic(topicName).create();
List<CompletableFuture<MessageId>> sendFutureList = Lists.newArrayList();
for (int i = 0; i < numMsgs / 2; i++) {
byte[] message = ("msg-" + i).getBytes();
- Message msg = MessageBuilder.create().setContent(message).build();
+ Message<byte[]> msg = MessageBuilder.create().setContent(message).build();
sendFutureList.add(producer.sendAsync(msg));
byte[] nobatchmsg = ("nobatch-" + i).getBytes();
msg = MessageBuilder.create().setContent(nobatchmsg).build();
@@ -575,11 +554,11 @@ public class BatchMessageTest extends BrokerTestBase {
assertTrue(topic.getProducers().values().iterator().next().getStats().msgRateIn > 0.0);
assertEquals(topic.getSubscription(subscriptionName).getNumberOfEntriesInBacklog(),
(numMsgs / 2) / numMsgsInBatch + numMsgs / 2);
- consumer = pulsarClient.subscribe(topicName, subscriptionName);
+ consumer = pulsarClient.newConsumer().topic(topicName).subscriptionName(subscriptionName).subscribe();
- Message lastunackedMsg = null;
+ Message<byte[]> lastunackedMsg = null;
for (int i = 0; i < numMsgs; i++) {
- Message msg = consumer.receive(5, TimeUnit.SECONDS);
+ Message<byte[]> msg = consumer.receive(5, TimeUnit.SECONDS);
assertNotNull(msg);
LOG.info("[{}] got message position{} data {}", subscriptionName, msg.getMessageId(),
String.valueOf(msg.getData()));
@@ -595,15 +574,15 @@ public class BatchMessageTest extends BrokerTestBase {
}
Thread.sleep(100);
assertEquals(topic.getSubscription(subscriptionName).getNumberOfEntriesInBacklog(), 0);
- assertTrue(((ConsumerImpl) consumer).isBatchingAckTrackerEmpty());
+ assertTrue(((ConsumerImpl<byte[]>) consumer).isBatchingAckTrackerEmpty());
consumer.close();
producer.close();
noBatchProducer.close();
}
/**
- * Verifies batch-message acking is thread-safe
- *
+ * Verifies batch-message acking is thread-safe
+ *
* @throws Exception
*/
@Test(timeOut = 3000)
@@ -612,28 +591,26 @@ public class BatchMessageTest extends BrokerTestBase {
final String topicName = "persistent://prop/use/ns-abc/testConcurrentAck";
final String subscriptionName = "sub-1";
- ConsumerConfiguration consConf = new ConsumerConfiguration();
- consConf.setSubscriptionType(SubscriptionType.Shared);
- Consumer consumer = pulsarClient.subscribe(topicName, subscriptionName, consConf);
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topicName).subscriptionName(subscriptionName)
+ .subscriptionType(SubscriptionType.Shared).subscribe();
consumer.close();
- ProducerConfiguration producerConf = new ProducerConfiguration();
- producerConf.setBatchingMaxPublishDelay(5000, TimeUnit.MILLISECONDS);
- producerConf.setBatchingMaxMessages(numMsgs);
- producerConf.setBatchingEnabled(true);
- Producer producer = pulsarClient.createProducer(topicName, producerConf);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName)
+ .batchingMaxPublishDelay(5, TimeUnit.SECONDS).batchingMaxMessages(numMsgs).enableBatching(true)
+ .create();
List<CompletableFuture<MessageId>> sendFutureList = Lists.newArrayList();
for (int i = 0; i < numMsgs; i++) {
byte[] message = ("my-message-" + i).getBytes();
- Message msg = MessageBuilder.create().setContent(message).build();
+ Message<byte[]> msg = MessageBuilder.create().setContent(message).build();
sendFutureList.add(producer.sendAsync(msg));
}
FutureUtil.waitForAll(sendFutureList).get();
PersistentTopic topic = (PersistentTopic) pulsar.getBrokerService().getTopicReference(topicName);
- final Consumer myConsumer = pulsarClient.subscribe(topicName, subscriptionName, consConf);
+ final Consumer<byte[]> myConsumer = pulsarClient.newConsumer().topic(topicName)
+ .subscriptionName(subscriptionName).subscriptionType(SubscriptionType.Shared).subscribe();
// assertEquals(dispatcher.getTotalUnackedMessages(), 1);
ExecutorService executor = Executors.newFixedThreadPool(10);
@@ -642,7 +619,7 @@ public class BatchMessageTest extends BrokerTestBase {
for (int i = 0; i < numMsgs; i++) {
executor.submit(() -> {
try {
- Message msg = myConsumer.receive(1, TimeUnit.SECONDS);
+ Message<byte[]> msg = myConsumer.receive(1, TimeUnit.SECONDS);
myConsumer.acknowledge(msg);
} catch (Exception e) {
failed.set(false);
@@ -662,6 +639,6 @@ public class BatchMessageTest extends BrokerTestBase {
myConsumer.close();
producer.close();
}
-
+
private static final Logger LOG = LoggerFactory.getLogger(BatchMessageTest.class);
}
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BrokerBkEnsemblesTests.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BrokerBkEnsemblesTests.java
index d688b7f..7f64082 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BrokerBkEnsemblesTests.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BrokerBkEnsemblesTests.java
@@ -30,7 +30,6 @@ import java.util.concurrent.TimeUnit;
import org.apache.bookkeeper.client.BookKeeper;
import org.apache.bookkeeper.mledger.ManagedLedgerConfig;
-import org.apache.bookkeeper.mledger.impl.EntryCache;
import org.apache.bookkeeper.mledger.impl.ManagedCursorImpl;
import org.apache.bookkeeper.mledger.impl.ManagedLedgerFactoryImpl;
import org.apache.bookkeeper.mledger.impl.ManagedLedgerImpl;
@@ -41,13 +40,10 @@ import org.apache.pulsar.broker.ServiceConfiguration;
import org.apache.pulsar.broker.service.persistent.PersistentTopic;
import org.apache.pulsar.client.admin.PulsarAdmin;
import org.apache.pulsar.client.api.Authentication;
-import org.apache.pulsar.client.api.ClientConfiguration;
import org.apache.pulsar.client.api.Consumer;
-import org.apache.pulsar.client.api.ConsumerConfiguration;
import org.apache.pulsar.client.api.Message;
import org.apache.pulsar.client.api.Producer;
import org.apache.pulsar.client.api.PulsarClient;
-import org.apache.pulsar.client.impl.MessageImpl;
import org.apache.pulsar.common.policies.data.ClusterData;
import org.apache.pulsar.common.policies.data.PropertyAdmin;
import org.apache.pulsar.zookeeper.LocalBookkeeperEnsemble;
@@ -126,7 +122,7 @@ public class BrokerBkEnsemblesTests {
/**
* It verifies that broker deletes cursor-ledger when broker-crashes without closing topic gracefully
- *
+ *
* <pre>
* 1. Create topic : publish/consume-ack msgs to update new cursor-ledger
* 2. Verify cursor-ledger is created and ledger-znode present
@@ -135,16 +131,15 @@ public class BrokerBkEnsemblesTests {
* 5. Topic is recovered from old-ledger and broker deletes the old ledger
* 6. verify znode of old-ledger is deleted
* </pre>
- *
+ *
* @throws Exception
*/
@Test
public void testCrashBrokerWithoutCursorLedgerLeak() throws Exception {
ZooKeeper zk = bkEnsemble.getZkClient();
- ClientConfiguration clientConf = new ClientConfiguration();
- clientConf.setStatsInterval(0, TimeUnit.SECONDS);
- PulsarClient client = PulsarClient.create(adminUrl.toString(), clientConf);
+ PulsarClient client = PulsarClient.builder().serviceUrl(adminUrl.toString()).statsInterval(0, TimeUnit.SECONDS)
+ .build();
final String ns1 = "prop/usc/crash-broker";
@@ -154,13 +149,14 @@ public class BrokerBkEnsemblesTests {
// (1) create topic
// publish and ack messages so, cursor can create cursor-ledger and update metadata
- Consumer consumer = client.subscribe(topic1, "my-subscriber-name");
- Producer producer = client.createProducer(topic1);
+ Consumer<byte[]> consumer = client.newConsumer().topic(topic1).subscriptionName("my-subscriber-name")
+ .subscribe();
+ Producer<byte[]> producer = client.newProducer().topic(topic1).create();
for (int i = 0; i < 10; i++) {
String message = "my-message-" + i;
producer.send(message.getBytes());
}
- Message msg = null;
+ Message<byte[]> msg = null;
for (int i = 0; i < 10; i++) {
msg = consumer.receive(1, TimeUnit.SECONDS);
consumer.acknowledge(msg);
@@ -189,8 +185,8 @@ public class BrokerBkEnsemblesTests {
// (4) Recreate topic
// publish and ack messages so, cursor can create cursor-ledger and update metadata
- consumer = client.subscribe(topic1, "my-subscriber-name");
- producer = client.createProducer(topic1);
+ consumer = client.newConsumer().topic(topic1).subscriptionName("my-subscriber-name").subscribe();
+ producer = client.newProducer().topic(topic1).create();
for (int i = 0; i < 10; i++) {
String message = "my-message-" + i;
producer.send(message.getBytes());
@@ -219,23 +215,22 @@ public class BrokerBkEnsemblesTests {
/**
* It verifies broker-configuration using which broker can skip non-recoverable data-ledgers.
- *
+ *
* <pre>
* 1. publish messages in 5 data-ledgers each with 20 entries under managed-ledger
* 2. delete first 4 data-ledgers
* 3. consumer will fail to consume any message as first data-ledger is non-recoverable
* 4. enable dynamic config to skip non-recoverable data-ledgers
* 5. consumer will be able to consume 20 messages from last non-deleted ledger
- *
+ *
* </pre>
- *
+ *
* @throws Exception
*/
@Test(timeOut = 6000)
public void testSkipCorruptDataLedger() throws Exception {
- ClientConfiguration clientConf = new ClientConfiguration();
- clientConf.setStatsInterval(0, TimeUnit.SECONDS);
- PulsarClient client = PulsarClient.create(adminUrl.toString(), clientConf);
+ PulsarClient client = PulsarClient.builder().serviceUrl(adminUrl.toString()).statsInterval(0, TimeUnit.SECONDS)
+ .build();
final String ns1 = "prop/usc/crash-broker";
final int totalMessages = 100;
@@ -247,9 +242,8 @@ public class BrokerBkEnsemblesTests {
final String topic1 = "persistent://" + ns1 + "/my-topic";
// Create subscription
- ConsumerConfiguration consumerConfig = new ConsumerConfiguration();
- consumerConfig.setReceiverQueueSize(5);
- Consumer consumer = client.subscribe(topic1, "my-subscriber-name", consumerConfig);
+ Consumer<byte[]> consumer = client.newConsumer().topic(topic1).subscriptionName("my-subscriber-name")
+ .receiverQueueSize(5).subscribe();
PersistentTopic topic = (PersistentTopic) pulsar.getBrokerService().getTopic(topic1).get();
ManagedLedgerImpl ml = (ManagedLedgerImpl) topic.getManagedLedger();
@@ -267,7 +261,7 @@ public class BrokerBkEnsemblesTests {
BookKeeper bookKeeper = (BookKeeper) bookKeeperField.get(ml);
// (1) publish messages in 5 data-ledgers each with 20 entries under managed-ledger
- Producer producer = client.createProducer(topic1);
+ Producer<byte[]> producer = client.newProducer().topic(topic1).create();
for (int i = 0; i < totalMessages; i++) {
String message = "my-message-" + i;
producer.send(message.getBytes());
@@ -304,9 +298,9 @@ public class BrokerBkEnsemblesTests {
ledgers.clear();
// (3) consumer will fail to consume any message as first data-ledger is non-recoverable
- Message msg = null;
+ Message<byte[]> msg = null;
// start consuming message
- consumer = client.subscribe(topic1, "my-subscriber-name");
+ consumer = client.newConsumer().topic(topic1).subscriptionName("my-subscriber-name").subscribe();
msg = consumer.receive(1, TimeUnit.SECONDS);
Assert.assertNull(msg);
consumer.close();
@@ -317,7 +311,7 @@ public class BrokerBkEnsemblesTests {
retryStrategically((test) -> config.isAutoSkipNonRecoverableData(), 5, 100);
// (5) consumer will be able to consume 20 messages from last non-deleted ledger
- consumer = client.subscribe(topic1, "my-subscriber-name");
+ consumer = client.newConsumer().topic(topic1).subscriptionName("my-subscriber-name").subscribe();
for (int i = 0; i < entriesPerLedger; i++) {
msg = consumer.receive(5, TimeUnit.SECONDS);
System.out.println(i);
@@ -329,6 +323,6 @@ public class BrokerBkEnsemblesTests {
client.close();
}
-
+
private static final Logger LOG = LoggerFactory.getLogger(BrokerBkEnsemblesTests.class);
}
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BrokerServiceTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BrokerServiceTest.java
index f0c28ab..c8dc63a 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BrokerServiceTest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BrokerServiceTest.java
@@ -55,16 +55,14 @@ import org.apache.pulsar.broker.service.BrokerServiceException.PersistenceExcept
import org.apache.pulsar.broker.service.persistent.PersistentTopic;
import org.apache.pulsar.client.admin.BrokerStats;
import org.apache.pulsar.client.api.Authentication;
-import org.apache.pulsar.client.api.ClientConfiguration;
import org.apache.pulsar.client.api.Consumer;
-import org.apache.pulsar.client.api.ConsumerConfiguration;
import org.apache.pulsar.client.api.Message;
import org.apache.pulsar.client.api.Producer;
import org.apache.pulsar.client.api.PulsarClient;
import org.apache.pulsar.client.api.SubscriptionType;
import org.apache.pulsar.client.impl.auth.AuthenticationTls;
-import org.apache.pulsar.common.naming.TopicName;
import org.apache.pulsar.common.naming.NamespaceBundle;
+import org.apache.pulsar.common.naming.TopicName;
import org.apache.pulsar.common.policies.data.BundlesData;
import org.apache.pulsar.common.policies.data.LocalPolicies;
import org.apache.pulsar.common.policies.data.PersistentTopicStats;
@@ -77,6 +75,8 @@ import com.google.common.collect.Lists;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
+import lombok.Cleanup;
+
/**
*/
public class BrokerServiceTest extends BrokerTestBase {
@@ -140,9 +140,7 @@ public class BrokerServiceTest extends BrokerTestBase {
PersistentTopicStats stats;
SubscriptionStats subStats;
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setSubscriptionType(SubscriptionType.Exclusive);
- Consumer consumer = pulsarClient.subscribe(topicName, subName, conf);
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topicName).subscriptionName(subName).subscribe();
Thread.sleep(ASYNC_EVENT_COMPLETION_WAIT);
PersistentTopic topicRef = (PersistentTopic) pulsar.getBrokerService().getTopicReference(topicName);
@@ -157,7 +155,7 @@ public class BrokerServiceTest extends BrokerTestBase {
assertEquals(subStats.msgBacklog, 0);
assertEquals(subStats.consumers.size(), 1);
- Producer producer = pulsarClient.createProducer(topicName);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName).create();
Thread.sleep(ASYNC_EVENT_COMPLETION_WAIT);
for (int i = 0; i < 10; i++) {
@@ -195,7 +193,7 @@ public class BrokerServiceTest extends BrokerTestBase {
assertEquals(stats.msgThroughputOut, subStats.consumers.get(0).msgThroughputOut);
assertNotNull(subStats.consumers.get(0).clientVersion);
- Message msg;
+ Message<byte[]> msg;
for (int i = 0; i < 10; i++) {
msg = consumer.receive();
consumer.acknowledge(msg);
@@ -218,9 +216,8 @@ public class BrokerServiceTest extends BrokerTestBase {
PersistentTopicStats stats;
SubscriptionStats subStats;
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setSubscriptionType(SubscriptionType.Shared);
- Consumer consumer = pulsarClient.subscribe(topicName, subName, conf);
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topicName).subscriptionName(subName)
+ .subscriptionType(SubscriptionType.Shared).subscribe();
Thread.sleep(ASYNC_EVENT_COMPLETION_WAIT);
PersistentTopic topicRef = (PersistentTopic) pulsar.getBrokerService().getTopicReference(topicName);
@@ -235,7 +232,7 @@ public class BrokerServiceTest extends BrokerTestBase {
assertEquals(subStats.msgBacklog, 0);
assertEquals(subStats.consumers.size(), 1);
- Producer producer = pulsarClient.createProducer(topicName);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName).create();
Thread.sleep(ASYNC_EVENT_COMPLETION_WAIT);
for (int i = 0; i < 10; i++) {
@@ -285,7 +282,7 @@ public class BrokerServiceTest extends BrokerTestBase {
assertTrue(subStats.msgRateRedeliver > 0.0);
assertEquals(subStats.msgRateRedeliver, subStats.consumers.get(0).msgRateRedeliver);
- Message msg;
+ Message<byte[]> msg;
for (int i = 0; i < 10; i++) {
msg = consumer.receive();
consumer.acknowledge(msg);
@@ -306,12 +303,10 @@ public class BrokerServiceTest extends BrokerTestBase {
final String subName = "newSub";
BrokerStats brokerStatsClient = admin.brokerStats();
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setSubscriptionType(SubscriptionType.Exclusive);
- Consumer consumer = pulsarClient.subscribe(topicName, subName, conf);
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topicName).subscriptionName(subName).subscribe();
Thread.sleep(ASYNC_EVENT_COMPLETION_WAIT);
- Producer producer = pulsarClient.createProducer(topicName);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName).create();
Thread.sleep(ASYNC_EVENT_COMPLETION_WAIT);
for (int i = 0; i < 10; i++) {
@@ -319,7 +314,7 @@ public class BrokerServiceTest extends BrokerTestBase {
producer.send(message.getBytes());
}
Thread.sleep(ASYNC_EVENT_COMPLETION_WAIT);
- Message msg = null;
+ Message<byte[]> msg = null;
for (int i = 0; i < 10; i++) {
msg = consumer.receive();
consumer.acknowledge(msg);
@@ -333,7 +328,7 @@ public class BrokerServiceTest extends BrokerTestBase {
// is the order really relevant here?
boolean namespaceDimensionFound = false;
boolean topicLoadTimesDimensionFound = false;
- for ( int i=0; i<metrics.size(); i++ ) {
+ for (int i = 0; i < metrics.size(); i++) {
try {
String data = metrics.get(i).getAsJsonObject().get("dimensions").toString();
if (!namespaceDimensionFound && data.contains("prop/use/ns-abc")) {
@@ -342,7 +337,8 @@ public class BrokerServiceTest extends BrokerTestBase {
if (!topicLoadTimesDimensionFound && data.contains("prop/use/ns-abc")) {
topicLoadTimesDimensionFound = true;
}
- } catch (Exception e) { /* it's possible there's no dimensions */ }
+ } catch (Exception e) {
+ /* it's possible there's no dimensions */ }
}
assertTrue(namespaceDimensionFound && topicLoadTimesDimensionFound);
@@ -350,7 +346,6 @@ public class BrokerServiceTest extends BrokerTestBase {
Thread.sleep(ASYNC_EVENT_COMPLETION_WAIT);
}
- @SuppressWarnings("unchecked")
@Test
public void testBrokerServiceNamespaceStats() throws Exception {
final int numBundles = 4;
@@ -358,16 +353,16 @@ public class BrokerServiceTest extends BrokerTestBase {
final String ns2 = "prop/use/stats2";
List<String> nsList = Lists.newArrayList(ns1, ns2);
- List<Producer> producerList = Lists.newArrayList();
+ List<Producer<byte[]>> producerList = Lists.newArrayList();
BrokerStats brokerStatsClient = admin.brokerStats();
for (String ns : nsList) {
admin.namespaces().createNamespace(ns, numBundles);
String topic1 = String.format("persistent://%s/topic1", ns);
- producerList.add(pulsarClient.createProducer(topic1));
+ producerList.add(pulsarClient.newProducer().topic(topic1).create());
String topic2 = String.format("persistent://%s/topic2", ns);
- producerList.add(pulsarClient.createProducer(topic2));
+ producerList.add(pulsarClient.newProducer().topic(topic2).create());
}
rolloverPerIntervalStats();
@@ -378,8 +373,7 @@ public class BrokerServiceTest extends BrokerTestBase {
JsonObject nsObject = topicStats.getAsJsonObject(ns);
List<String> topicList = admin.namespaces().getTopics(ns);
for (String topic : topicList) {
- NamespaceBundle bundle = (NamespaceBundle) pulsar.getNamespaceService()
- .getBundle(TopicName.get(topic));
+ NamespaceBundle bundle = (NamespaceBundle) pulsar.getNamespaceService().getBundle(TopicName.get(topic));
JsonObject bundleObject = nsObject.getAsJsonObject(bundle.getBundleRange());
JsonObject topicObject = bundleObject.getAsJsonObject("persistent");
AtomicBoolean topicPresent = new AtomicBoolean();
@@ -392,9 +386,10 @@ public class BrokerServiceTest extends BrokerTestBase {
}
}
- for (Producer producer : producerList) {
+ for (Producer<?> producer : producerList) {
producer.close();
}
+
for (String ns : nsList) {
List<String> topics = admin.namespaces().getTopics(ns);
for (String dest : topics) {
@@ -408,9 +403,6 @@ public class BrokerServiceTest extends BrokerTestBase {
public void testTlsDisabled() throws Exception {
final String topicName = "persistent://prop/use/ns-abc/newTopic";
final String subName = "newSub";
- ClientConfiguration clientConfig;
- ConsumerConfiguration consumerConfig;
- Consumer consumer;
PulsarClient pulsarClient = null;
conf.setAuthenticationEnabled(false);
@@ -419,13 +411,11 @@ public class BrokerServiceTest extends BrokerTestBase {
// Case 1: Access without TLS
try {
- clientConfig = new ClientConfiguration();
- clientConfig.setStatsInterval(0, TimeUnit.SECONDS);
- pulsarClient = PulsarClient.create(brokerUrl.toString(), clientConfig);
- consumerConfig = new ConsumerConfiguration();
- consumerConfig.setSubscriptionType(SubscriptionType.Exclusive);
- consumer = pulsarClient.subscribe(topicName, subName, consumerConfig);
- consumer.close();
+ pulsarClient = PulsarClient.builder().serviceUrl(brokerUrl.toString()).statsInterval(0, TimeUnit.SECONDS)
+ .build();
+ @Cleanup
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topicName).subscriptionName(subName)
+ .subscribe();
} catch (Exception e) {
fail("should not fail");
} finally {
@@ -434,14 +424,13 @@ public class BrokerServiceTest extends BrokerTestBase {
// Case 2: Access with TLS
try {
- clientConfig = new ClientConfiguration();
- clientConfig.setUseTls(true);
- clientConfig.setStatsInterval(0, TimeUnit.SECONDS);
- pulsarClient = PulsarClient.create(brokerUrlTls.toString(), clientConfig);
- consumerConfig = new ConsumerConfiguration();
- consumerConfig.setSubscriptionType(SubscriptionType.Exclusive);
- consumer = pulsarClient.subscribe(topicName, subName, consumerConfig);
- consumer.close();
+ pulsarClient = PulsarClient.builder().serviceUrl(brokerUrlTls.toString()).enableTls(true)
+ .statsInterval(0, TimeUnit.SECONDS).build();
+
+ @Cleanup
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topicName).subscriptionName(subName)
+ .subscribe();
+
fail("TLS connection should fail");
} catch (Exception e) {
assertTrue(e.getMessage().contains("ConnectException"));
@@ -454,9 +443,6 @@ public class BrokerServiceTest extends BrokerTestBase {
public void testTlsEnabled() throws Exception {
final String topicName = "persistent://prop/use/ns-abc/newTopic";
final String subName = "newSub";
- ClientConfiguration clientConfig;
- ConsumerConfiguration consumerConfig;
- Consumer consumer;
conf.setAuthenticationEnabled(false);
conf.setTlsEnabled(true);
@@ -467,13 +453,11 @@ public class BrokerServiceTest extends BrokerTestBase {
// Case 1: Access without TLS
PulsarClient pulsarClient = null;
try {
- clientConfig = new ClientConfiguration();
- clientConfig.setStatsInterval(0, TimeUnit.SECONDS);
- pulsarClient = PulsarClient.create(brokerUrl.toString(), clientConfig);
- consumerConfig = new ConsumerConfiguration();
- consumerConfig.setSubscriptionType(SubscriptionType.Exclusive);
- consumer = pulsarClient.subscribe(topicName, subName, consumerConfig);
- consumer.close();
+ pulsarClient = PulsarClient.builder().serviceUrl(brokerUrl.toString()).statsInterval(0, TimeUnit.SECONDS)
+ .build();
+ @Cleanup
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topicName).subscriptionName(subName)
+ .subscribe();
} catch (Exception e) {
fail("should not fail");
} finally {
@@ -482,15 +466,13 @@ public class BrokerServiceTest extends BrokerTestBase {
// Case 2: Access with TLS (Allow insecure TLS connection)
try {
- clientConfig = new ClientConfiguration();
- clientConfig.setUseTls(true);
- clientConfig.setTlsAllowInsecureConnection(true);
- clientConfig.setStatsInterval(0, TimeUnit.SECONDS);
- pulsarClient = PulsarClient.create(brokerUrlTls.toString(), clientConfig);
- consumerConfig = new ConsumerConfiguration();
- consumerConfig.setSubscriptionType(SubscriptionType.Exclusive);
- consumer = pulsarClient.subscribe(topicName, subName, consumerConfig);
- consumer.close();
+ pulsarClient = PulsarClient.builder().serviceUrl(brokerUrlTls.toString()).enableTls(true)
+ .allowTlsInsecureConnection(true).statsInterval(0, TimeUnit.SECONDS).build();
+
+ @Cleanup
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topicName).subscriptionName(subName)
+ .subscribe();
+
} catch (Exception e) {
fail("should not fail");
} finally {
@@ -499,15 +481,13 @@ public class BrokerServiceTest extends BrokerTestBase {
// Case 3: Access with TLS (Disallow insecure TLS connection)
try {
- clientConfig = new ClientConfiguration();
- clientConfig.setUseTls(true);
- clientConfig.setTlsAllowInsecureConnection(false);
- clientConfig.setStatsInterval(0, TimeUnit.SECONDS);
- pulsarClient = PulsarClient.create(brokerUrlTls.toString(), clientConfig);
- consumerConfig = new ConsumerConfiguration();
- consumerConfig.setSubscriptionType(SubscriptionType.Exclusive);
- consumer = pulsarClient.subscribe(topicName, subName, consumerConfig);
- consumer.close();
+ pulsarClient = PulsarClient.builder().serviceUrl(brokerUrlTls.toString()).enableTls(true)
+ .allowTlsInsecureConnection(false).statsInterval(0, TimeUnit.SECONDS).build();
+
+ @Cleanup
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topicName).subscriptionName(subName)
+ .subscribe();
+
fail("should fail");
} catch (Exception e) {
assertTrue(e.getMessage().contains("General OpenSslEngine problem"));
@@ -517,16 +497,13 @@ public class BrokerServiceTest extends BrokerTestBase {
// Case 4: Access with TLS (Use trusted certificates)
try {
- clientConfig = new ClientConfiguration();
- clientConfig.setUseTls(true);
- clientConfig.setTlsAllowInsecureConnection(false);
- clientConfig.setTlsTrustCertsFilePath(TLS_SERVER_CERT_FILE_PATH);
- clientConfig.setStatsInterval(0, TimeUnit.SECONDS);
- pulsarClient = PulsarClient.create(brokerUrlTls.toString(), clientConfig);
- consumerConfig = new ConsumerConfiguration();
- consumerConfig.setSubscriptionType(SubscriptionType.Exclusive);
- consumer = pulsarClient.subscribe(topicName, subName, consumerConfig);
- consumer.close();
+ pulsarClient = PulsarClient.builder().serviceUrl(brokerUrlTls.toString()).enableTls(true)
+ .allowTlsInsecureConnection(false).tlsTrustCertsFilePath(TLS_SERVER_CERT_FILE_PATH)
+ .statsInterval(0, TimeUnit.SECONDS).build();
+
+ @Cleanup
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topicName).subscriptionName(subName)
+ .subscribe();
} catch (Exception e) {
fail("should not fail");
} finally {
@@ -534,13 +511,11 @@ public class BrokerServiceTest extends BrokerTestBase {
}
}
+ @SuppressWarnings("deprecation")
@Test
public void testTlsAuthAllowInsecure() throws Exception {
final String topicName = "persistent://prop/usw/my-ns/newTopic";
final String subName = "newSub";
- ClientConfiguration clientConfig;
- ConsumerConfiguration consumerConfig;
- Consumer consumer;
Authentication auth;
Set<String> providers = new HashSet<>();
@@ -562,15 +537,13 @@ public class BrokerServiceTest extends BrokerTestBase {
// Case 1: Access without client certificate
try {
- clientConfig = new ClientConfiguration();
- clientConfig.setUseTls(true);
- clientConfig.setTlsAllowInsecureConnection(true);
- clientConfig.setStatsInterval(0, TimeUnit.SECONDS);
- pulsarClient = PulsarClient.create(brokerUrlTls.toString(), clientConfig);
- consumerConfig = new ConsumerConfiguration();
- consumerConfig.setSubscriptionType(SubscriptionType.Exclusive);
- consumer = pulsarClient.subscribe(topicName, subName, consumerConfig);
- consumer.close();
+ pulsarClient = PulsarClient.builder().serviceUrl(brokerUrlTls.toString()).enableTls(true)
+ .allowTlsInsecureConnection(true).statsInterval(0, TimeUnit.SECONDS).build();
+
+ @Cleanup
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topicName).subscriptionName(subName)
+ .subscribe();
+
fail("should fail");
} catch (Exception e) {
assertTrue(e.getMessage().contains("Authentication required"));
@@ -582,16 +555,14 @@ public class BrokerServiceTest extends BrokerTestBase {
try {
auth = new AuthenticationTls();
auth.configure(authParams);
- clientConfig = new ClientConfiguration();
- clientConfig.setAuthentication(auth);
- clientConfig.setUseTls(true);
- clientConfig.setTlsAllowInsecureConnection(true);
- clientConfig.setStatsInterval(0, TimeUnit.SECONDS);
- pulsarClient = PulsarClient.create(brokerUrlTls.toString(), clientConfig);
- consumerConfig = new ConsumerConfiguration();
- consumerConfig.setSubscriptionType(SubscriptionType.Exclusive);
- consumer = pulsarClient.subscribe(topicName, subName, consumerConfig);
- consumer.close();
+
+ pulsarClient = PulsarClient.builder().authentication(auth).serviceUrl(brokerUrlTls.toString())
+ .enableTls(true).allowTlsInsecureConnection(true).statsInterval(0, TimeUnit.SECONDS).build();
+
+ @Cleanup
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topicName).subscriptionName(subName)
+ .subscribe();
+
} catch (Exception e) {
fail("should not fail");
} finally {
@@ -599,13 +570,11 @@ public class BrokerServiceTest extends BrokerTestBase {
}
}
+ @SuppressWarnings("deprecation")
@Test
public void testTlsAuthDisallowInsecure() throws Exception {
final String topicName = "persistent://prop/usw/my-ns/newTopic";
final String subName = "newSub";
- ClientConfiguration clientConfig;
- ConsumerConfiguration consumerConfig;
- Consumer consumer;
Authentication auth;
Set<String> providers = new HashSet<>();
@@ -627,15 +596,13 @@ public class BrokerServiceTest extends BrokerTestBase {
// Case 1: Access without client certificate
try {
- clientConfig = new ClientConfiguration();
- clientConfig.setUseTls(true);
- clientConfig.setTlsAllowInsecureConnection(true);
- clientConfig.setStatsInterval(0, TimeUnit.SECONDS);
- pulsarClient = PulsarClient.create(brokerUrlTls.toString(), clientConfig);
- consumerConfig = new ConsumerConfiguration();
- consumerConfig.setSubscriptionType(SubscriptionType.Exclusive);
- consumer = pulsarClient.subscribe(topicName, subName, consumerConfig);
- consumer.close();
+ pulsarClient = PulsarClient.builder().serviceUrl(brokerUrlTls.toString()).enableTls(true)
+ .allowTlsInsecureConnection(true).statsInterval(0, TimeUnit.SECONDS).build();
+
+ @Cleanup
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topicName).subscriptionName(subName)
+ .subscribe();
+
fail("should fail");
} catch (Exception e) {
assertTrue(e.getMessage().contains("Authentication required"));
@@ -647,16 +614,12 @@ public class BrokerServiceTest extends BrokerTestBase {
try {
auth = new AuthenticationTls();
auth.configure(authParams);
- clientConfig = new ClientConfiguration();
- clientConfig.setAuthentication(auth);
- clientConfig.setUseTls(true);
- clientConfig.setTlsAllowInsecureConnection(true);
- clientConfig.setStatsInterval(0, TimeUnit.SECONDS);
- pulsarClient = PulsarClient.create(brokerUrlTls.toString(), clientConfig);
- consumerConfig = new ConsumerConfiguration();
- consumerConfig.setSubscriptionType(SubscriptionType.Exclusive);
- consumer = pulsarClient.subscribe(topicName, subName, consumerConfig);
- consumer.close();
+ pulsarClient = PulsarClient.builder().authentication(auth).serviceUrl(brokerUrlTls.toString())
+ .enableTls(true).allowTlsInsecureConnection(true).statsInterval(0, TimeUnit.SECONDS).build();
+
+ @Cleanup
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topicName).subscriptionName(subName)
+ .subscribe();
fail("should fail");
} catch (Exception e) {
assertTrue(e.getMessage().contains("Authentication required"));
@@ -665,13 +628,11 @@ public class BrokerServiceTest extends BrokerTestBase {
}
}
+ @SuppressWarnings("deprecation")
@Test
public void testTlsAuthUseTrustCert() throws Exception {
final String topicName = "persistent://prop/usw/my-ns/newTopic";
final String subName = "newSub";
- ClientConfiguration clientConfig;
- ConsumerConfiguration consumerConfig;
- Consumer consumer;
Authentication auth;
Set<String> providers = new HashSet<>();
@@ -694,15 +655,12 @@ public class BrokerServiceTest extends BrokerTestBase {
// Case 1: Access without client certificate
try {
- clientConfig = new ClientConfiguration();
- clientConfig.setUseTls(true);
- clientConfig.setTlsAllowInsecureConnection(true);
- clientConfig.setStatsInterval(0, TimeUnit.SECONDS);
- pulsarClient = PulsarClient.create(brokerUrlTls.toString(), clientConfig);
- consumerConfig = new ConsumerConfiguration();
- consumerConfig.setSubscriptionType(SubscriptionType.Exclusive);
- consumer = pulsarClient.subscribe(topicName, subName, consumerConfig);
- consumer.close();
+ pulsarClient = PulsarClient.builder().serviceUrl(brokerUrlTls.toString()).enableTls(true)
+ .allowTlsInsecureConnection(true).statsInterval(0, TimeUnit.SECONDS).build();
+
+ @Cleanup
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topicName).subscriptionName(subName)
+ .subscribe();
fail("should fail");
} catch (Exception e) {
assertTrue(e.getMessage().contains("Authentication required"));
@@ -714,16 +672,12 @@ public class BrokerServiceTest extends BrokerTestBase {
try {
auth = new AuthenticationTls();
auth.configure(authParams);
- clientConfig = new ClientConfiguration();
- clientConfig.setAuthentication(auth);
- clientConfig.setUseTls(true);
- clientConfig.setTlsAllowInsecureConnection(true);
- clientConfig.setStatsInterval(0, TimeUnit.SECONDS);
- pulsarClient = PulsarClient.create(brokerUrlTls.toString(), clientConfig);
- consumerConfig = new ConsumerConfiguration();
- consumerConfig.setSubscriptionType(SubscriptionType.Exclusive);
- consumer = pulsarClient.subscribe(topicName, subName, consumerConfig);
- consumer.close();
+ pulsarClient = PulsarClient.builder().authentication(auth).serviceUrl(brokerUrlTls.toString())
+ .enableTls(true).allowTlsInsecureConnection(true).statsInterval(0, TimeUnit.SECONDS).build();
+
+ @Cleanup
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topicName).subscriptionName(subName)
+ .subscribe();
} catch (Exception e) {
fail("should not fail");
} finally {
@@ -740,14 +694,12 @@ public class BrokerServiceTest extends BrokerTestBase {
public void testLookupThrottlingForClientByClient() throws Exception {
final String topicName = "persistent://prop/usw/my-ns/newTopic";
- org.apache.pulsar.client.api.ClientConfiguration clientConf = new org.apache.pulsar.client.api.ClientConfiguration();
- clientConf.setStatsInterval(0, TimeUnit.SECONDS);
- clientConf.setConcurrentLookupRequest(0);
String lookupUrl = new URI("pulsar://localhost:" + BROKER_PORT).toString();
- PulsarClient pulsarClient = PulsarClient.create(lookupUrl, clientConf);
+ PulsarClient pulsarClient = PulsarClient.builder().serviceUrl(lookupUrl).statsInterval(0, TimeUnit.SECONDS)
+ .maxConcurrentLookupRequests(0).build();
try {
- Consumer consumer = pulsarClient.subscribe(topicName, "mysub", new ConsumerConfiguration());
+ pulsarClient.newConsumer().topic(topicName).subscriptionName("mysub").subscribe();
fail("It should fail as throttling should not receive any request");
} catch (org.apache.pulsar.client.api.PulsarClientException.TooManyRequestsException e) {
// ok as throttling set to 0
@@ -762,7 +714,7 @@ public class BrokerServiceTest extends BrokerTestBase {
// own namespace bundle
final String topicName = "persistent://" + namespace + "/my-topic";
TopicName topic = TopicName.get(topicName);
- Producer producer = pulsarClient.createProducer(topicName);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName).create();
producer.close();
// disable namespace-bundle
@@ -796,7 +748,7 @@ public class BrokerServiceTest extends BrokerTestBase {
// let this broker own this namespace bundle by creating a topic
try {
final String successfulTopic = "persistent://" + namespace + "/ownBundleTopic";
- Producer producer = pulsarClient.createProducer(successfulTopic);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(successfulTopic).create();
producer.close();
} catch (Exception e) {
fail(e.getMessage());
@@ -839,7 +791,7 @@ public class BrokerServiceTest extends BrokerTestBase {
// let this broker own this namespace bundle by creating a topic
try {
final String successfulTopic = "persistent://" + namespace + "/ownBundleTopic";
- Producer producer = pulsarClient.createProducer(successfulTopic);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(successfulTopic).create();
producer.close();
} catch (Exception e) {
fail(e.getMessage());
@@ -856,6 +808,7 @@ public class BrokerServiceTest extends BrokerTestBase {
// fail managed-ledger future
Field ledgerField = ManagedLedgerFactoryImpl.class.getDeclaredField("ledgers");
ledgerField.setAccessible(true);
+ @SuppressWarnings("unchecked")
ConcurrentHashMap<String, CompletableFuture<ManagedLedgerImpl>> ledgers = (ConcurrentHashMap<String, CompletableFuture<ManagedLedgerImpl>>) ledgerField
.get(pulsar.getManagedLedgerFactory());
CompletableFuture<ManagedLedgerImpl> future = new CompletableFuture<>();
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BrokerServiceThrottlingTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BrokerServiceThrottlingTest.java
index 89f4771..a3171c7 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BrokerServiceThrottlingTest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BrokerServiceThrottlingTest.java
@@ -34,7 +34,6 @@ import java.util.concurrent.TimeUnit;
import org.apache.bookkeeper.util.ZkUtils;
import org.apache.pulsar.client.api.Consumer;
-import org.apache.pulsar.client.api.ConsumerConfiguration;
import org.apache.pulsar.client.api.PulsarClient;
import org.apache.pulsar.client.api.PulsarClientException;
import org.apache.pulsar.client.api.SubscriptionType;
@@ -48,8 +47,6 @@ import org.testng.annotations.Test;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
-import static org.apache.pulsar.broker.auth.MockedPulsarServiceBaseTest.retryStrategically;
-import static org.apache.pulsar.broker.auth.MockedPulsarServiceBaseTest.retryStrategically;
/**
*/
@@ -92,13 +89,11 @@ public class BrokerServiceThrottlingTest extends BrokerTestBase {
final String topicName = "persistent://prop/usw/my-ns/newTopic";
- org.apache.pulsar.client.api.ClientConfiguration clientConf = new org.apache.pulsar.client.api.ClientConfiguration();
- clientConf.setStatsInterval(0, TimeUnit.SECONDS);
String lookupUrl = new URI("pulsar://localhost:" + BROKER_PORT).toString();
- PulsarClient pulsarClient = PulsarClient.create(lookupUrl, clientConf);
+ PulsarClient pulsarClient = PulsarClient.builder().serviceUrl(lookupUrl).statsInterval(0, TimeUnit.SECONDS)
+ .build();
- ConsumerConfiguration consumerConfig = new ConsumerConfiguration();
- Consumer consumer = pulsarClient.subscribe(topicName, "mysub", consumerConfig);
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topicName).subscriptionName("mysub").subscribe();
consumer.close();
int newPermits = 0;
@@ -113,7 +108,7 @@ public class BrokerServiceThrottlingTest extends BrokerTestBase {
}
try {
- consumer = pulsarClient.subscribe(topicName, "mysub", consumerConfig);
+ consumer = pulsarClient.newConsumer().topic(topicName).subscriptionName("mysub").subscribe();
consumer.close();
fail("It should fail as throttling should not receive any request");
} catch (org.apache.pulsar.client.api.PulsarClientException.TooManyRequestsException e) {
@@ -135,15 +130,9 @@ public class BrokerServiceThrottlingTest extends BrokerTestBase {
public void testLookupThrottlingForClientByBroker() throws Exception {
final String topicName = "persistent://prop/usw/my-ns/newTopic";
- org.apache.pulsar.client.api.ClientConfiguration clientConf = new org.apache.pulsar.client.api.ClientConfiguration();
- clientConf.setStatsInterval(0, TimeUnit.SECONDS);
- clientConf.setIoThreads(20);
- clientConf.setConnectionsPerBroker(20);
String lookupUrl = new URI("pulsar://localhost:" + BROKER_PORT).toString();
- PulsarClient pulsarClient = PulsarClient.create(lookupUrl, clientConf);
-
- ConsumerConfiguration consumerConfig = new ConsumerConfiguration();
- consumerConfig.setSubscriptionType(SubscriptionType.Shared);
+ PulsarClient pulsarClient = PulsarClient.builder().serviceUrl(lookupUrl).statsInterval(0, TimeUnit.SECONDS)
+ .ioThreads(20).connectionsPerBroker(20).build();
int newPermits = 1;
admin.brokers().updateDynamicConfiguration("maxConcurrentLookupRequest", Integer.toString(newPermits));
@@ -156,14 +145,15 @@ public class BrokerServiceThrottlingTest extends BrokerTestBase {
}
}
- List<Consumer> successfulConsumers = Collections.synchronizedList(Lists.newArrayList());
+ List<Consumer<byte[]>> successfulConsumers = Collections.synchronizedList(Lists.newArrayList());
ExecutorService executor = Executors.newFixedThreadPool(10);
final int totalConsumers = 20;
CountDownLatch latch = new CountDownLatch(totalConsumers);
for (int i = 0; i < totalConsumers; i++) {
executor.execute(() -> {
try {
- successfulConsumers.add(pulsarClient.subscribe(topicName, "mysub", consumerConfig));
+ successfulConsumers.add(pulsarClient.newConsumer().topic(topicName).subscriptionName("mysub")
+ .subscriptionType(SubscriptionType.Shared).subscribe());
} catch (PulsarClientException.TooManyRequestsException e) {
// ok
} catch (Exception e) {
@@ -174,7 +164,7 @@ public class BrokerServiceThrottlingTest extends BrokerTestBase {
}
latch.await();
- for (Consumer c : successfulConsumers) {
+ for (Consumer<?> c : successfulConsumers) {
if (c != null) {
c.close();
}
@@ -202,23 +192,19 @@ public class BrokerServiceThrottlingTest extends BrokerTestBase {
final String topicName = "persistent://prop/usw/my-ns/newTopic";
- org.apache.pulsar.client.api.ClientConfiguration clientConf = new org.apache.pulsar.client.api.ClientConfiguration();
- clientConf.setStatsInterval(0, TimeUnit.SECONDS);
- clientConf.setIoThreads(20);
- clientConf.setConnectionsPerBroker(20);
String lookupUrl = new URI("pulsar://localhost:" + BROKER_PORT).toString();
- PulsarClient pulsarClient = PulsarClient.create(lookupUrl, clientConf);
+ PulsarClient pulsarClient = PulsarClient.builder().serviceUrl(lookupUrl).statsInterval(0, TimeUnit.SECONDS)
+ .ioThreads(20).connectionsPerBroker(20).build();
upsertLookupPermits(100);
- ConsumerConfiguration consumerConfig = new ConsumerConfiguration();
- consumerConfig.setSubscriptionType(SubscriptionType.Shared);
- List<Consumer> consumers = Collections.synchronizedList(Lists.newArrayList());
+ List<Consumer<byte[]>> consumers = Collections.synchronizedList(Lists.newArrayList());
ExecutorService executor = Executors.newFixedThreadPool(10);
final int totalConsumers = 8;
CountDownLatch latch = new CountDownLatch(totalConsumers);
for (int i = 0; i < totalConsumers; i++) {
executor.execute(() -> {
try {
- consumers.add(pulsarClient.subscribe(topicName, "mysub", consumerConfig));
+ consumers.add(pulsarClient.newConsumer().topic(topicName).subscriptionName("mysub")
+ .subscriptionType(SubscriptionType.Shared).subscribe());
} catch (PulsarClientException.TooManyRequestsException e) {
// ok
} catch (Exception e) {
@@ -238,7 +224,7 @@ public class BrokerServiceThrottlingTest extends BrokerTestBase {
int totalConnectedConsumers = 0;
for (int i = 0; i < consumers.size(); i++) {
- if (((ConsumerImpl) consumers.get(i)).isConnected()) {
+ if (((ConsumerImpl<?>) consumers.get(i)).isConnected()) {
totalConnectedConsumers++;
}
consumers.get(i).close();
@@ -250,9 +236,9 @@ public class BrokerServiceThrottlingTest extends BrokerTestBase {
pulsarClient.close();
}
- private boolean areAllConsumersConnected(List<Consumer> consumers) {
+ private boolean areAllConsumersConnected(List<Consumer<byte[]>> consumers) {
for (int i = 0; i < consumers.size(); i++) {
- if (!((ConsumerImpl) consumers.get(i)).isConnected()) {
+ if (!((ConsumerImpl<?>) consumers.get(i)).isConnected()) {
return false;
}
}
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/PartitionKeyTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/PartitionKeyTest.java
index cedaf3a..d467ed1 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/PartitionKeyTest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/PartitionKeyTest.java
@@ -24,7 +24,6 @@ import static org.testng.Assert.assertTrue;
import org.apache.pulsar.client.api.Message;
import org.apache.pulsar.client.api.MessageBuilder;
import org.apache.pulsar.client.api.Producer;
-import org.apache.pulsar.client.api.ProducerConfiguration;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
@@ -49,15 +48,16 @@ public class PartitionKeyTest extends BrokerTestBase {
public void testPartitionKey() throws Exception {
final String topicName = "persistent://prop/use/ns-abc/testPartitionKey";
- org.apache.pulsar.client.api.Consumer consumer = pulsarClient.subscribe(topicName, "my-subscription");
+ org.apache.pulsar.client.api.Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topicName)
+ .subscriptionName("my-subscription").subscribe();
// 1. producer with batch enabled
- ProducerConfiguration conf = new ProducerConfiguration();
- conf.setBatchingEnabled(true);
- Producer producerWithBatches = pulsarClient.createProducer(topicName, conf);
+ Producer<byte[]> producerWithBatches = pulsarClient.newProducer().topic(topicName).enableBatching(true)
+ .create();
+
// 2. Producer without batches
- Producer producerWithoutBatches = pulsarClient.createProducer(topicName);
+ Producer<byte[]> producerWithoutBatches = pulsarClient.newProducer().topic(topicName).create();
producerWithBatches.sendAsync(MessageBuilder.create().setKey("key-1").setContent("msg-1".getBytes()).build());
producerWithBatches.sendAsync(MessageBuilder.create().setKey("key-2").setContent("msg-2".getBytes()).build())
@@ -67,7 +67,7 @@ public class PartitionKeyTest extends BrokerTestBase {
.sendAsync(MessageBuilder.create().setKey("key-3").setContent("msg-3".getBytes()).build());
for (int i = 1; i <= 3; i++) {
- Message msg = consumer.receive();
+ Message<byte[]> msg = consumer.receive();
assertTrue(msg.hasKey());
assertEquals(msg.getKey(), "key-" + i);
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/PeerReplicatorTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/PeerReplicatorTest.java
index d5456fc..d23356e 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/PeerReplicatorTest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/PeerReplicatorTest.java
@@ -28,13 +28,10 @@ import java.util.concurrent.TimeUnit;
import org.apache.pulsar.broker.service.persistent.PersistentTopic;
import org.apache.pulsar.client.admin.PulsarAdminException;
-import org.apache.pulsar.client.api.ClientConfiguration;
import org.apache.pulsar.client.api.Producer;
import org.apache.pulsar.client.api.PulsarClient;
import org.apache.pulsar.client.api.PulsarClientException;
import org.apache.pulsar.common.policies.data.PersistentTopicStats;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.DataProvider;
@@ -73,9 +70,9 @@ public class PeerReplicatorTest extends ReplicatorTestBase {
* 5. Try to create producer using broker in cluster r3
* 6. Success : "r3" finds "r1" in peer cluster which owns n1 and redirects to "r1"
* 7. call admin-api to "r3" which redirects request to "r1"
- *
+ *
* </pre>
- *
+ *
* @param protocol
* @throws Exception
*/
@@ -99,14 +96,11 @@ public class PeerReplicatorTest extends ReplicatorTestBase {
final String topic1 = "persistent://" + namespace1 + "/topic1";
final String topic2 = "persistent://" + namespace2 + "/topic2";
- ClientConfiguration conf = new ClientConfiguration();
- conf.setStatsInterval(0, TimeUnit.SECONDS);
- PulsarClient client3 = PulsarClient.create(serviceUrl, conf);
- Producer producer;
+ PulsarClient client3 = PulsarClient.builder().serviceUrl(serviceUrl).statsInterval(0, TimeUnit.SECONDS).build();
try {
// try to create producer for topic1 (part of cluster: r1) by calling cluster: r3
- producer = client3.createProducer(topic1);
+ client3.newProducer().topic(topic1).create();
fail("should have failed as cluster:r3 doesn't own namespace");
} catch (PulsarClientException e) {
// Ok
@@ -114,7 +108,7 @@ public class PeerReplicatorTest extends ReplicatorTestBase {
try {
// try to create producer for topic2 (part of cluster: r2) by calling cluster: r3
- producer = client3.createProducer(topic2);
+ client3.newProducer().topic(topic2).create();
fail("should have failed as cluster:r3 doesn't own namespace");
} catch (PulsarClientException e) {
// Ok
@@ -122,7 +116,7 @@ public class PeerReplicatorTest extends ReplicatorTestBase {
// set peer-clusters : r3->r1
admin1.clusters().updatePeerClusterNames("r3", Sets.newLinkedHashSet(Lists.newArrayList("r1")));
- producer = client3.createProducer(topic1);
+ Producer<byte[]> producer = client3.newProducer().topic(topic1).create();
PersistentTopic topic = (PersistentTopic) pulsar1.getBrokerService().getTopic(topic1).get();
assertNotNull(topic);
pulsar1.getBrokerService().updateRates();
@@ -137,7 +131,7 @@ public class PeerReplicatorTest extends ReplicatorTestBase {
// set peer-clusters : r3->r2
admin2.clusters().updatePeerClusterNames("r3", Sets.newLinkedHashSet(Lists.newArrayList("r2")));
- producer = client3.createProducer(topic2);
+ producer = client3.newProducer().topic(topic2).create();
topic = (PersistentTopic) pulsar2.getBrokerService().getTopic(topic2).get();
assertNotNull(topic);
pulsar2.getBrokerService().updateRates();
@@ -169,7 +163,4 @@ public class PeerReplicatorTest extends ReplicatorTestBase {
}, 5, 100);
assertEquals(admin1.clusters().getPeerClusterNames(mainClusterName), peerClusters);
}
-
- private static final Logger log = LoggerFactory.getLogger(PeerReplicatorTest.class);
-
}
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/PersistentDispatcherFailoverConsumerTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/PersistentDispatcherFailoverConsumerTest.java
index e25581f..50fe3c3 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/PersistentDispatcherFailoverConsumerTest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/PersistentDispatcherFailoverConsumerTest.java
@@ -409,7 +409,7 @@ public class PersistentDispatcherFailoverConsumerTest {
// 11. With only one consumer, unsubscribe is allowed
assertTrue(pdfc.canUnsubscribe(consumer1));
}
-
+
@Test
public void testMultipleDispatcherGetNextConsumerWithDifferentPriorityLevel() throws Exception {
@@ -561,14 +561,15 @@ public class PersistentDispatcherFailoverConsumerTest {
Assert.assertEquals(getNextConsumer(dispatcher), null);
}
+ @SuppressWarnings("unchecked")
private Consumer getNextConsumer(PersistentDispatcherMultipleConsumers dispatcher) throws Exception {
-
+
Consumer consumer = dispatcher.getNextConsumer();
-
+
if (consumer != null) {
Field field = Consumer.class.getDeclaredField("MESSAGE_PERMITS_UPDATER");
field.setAccessible(true);
- AtomicIntegerFieldUpdater<Consumer> messagePermits = (AtomicIntegerFieldUpdater) field.get(consumer);
+ AtomicIntegerFieldUpdater<Consumer> messagePermits = (AtomicIntegerFieldUpdater<Consumer>) field.get(consumer);
messagePermits.decrementAndGet(consumer);
return consumer;
}
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/PersistentFailoverE2ETest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/PersistentFailoverE2ETest.java
index dda0bc0..d609cd4 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/PersistentFailoverE2ETest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/PersistentFailoverE2ETest.java
@@ -24,7 +24,6 @@ import static org.testng.Assert.assertNull;
import static org.testng.Assert.assertTrue;
import static org.testng.Assert.fail;
-import com.google.common.collect.Sets;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
@@ -36,15 +35,14 @@ import org.apache.pulsar.broker.service.persistent.PersistentDispatcherSingleAct
import org.apache.pulsar.broker.service.persistent.PersistentSubscription;
import org.apache.pulsar.broker.service.persistent.PersistentTopic;
import org.apache.pulsar.client.api.Consumer;
-import org.apache.pulsar.client.api.ConsumerConfiguration;
+import org.apache.pulsar.client.api.ConsumerBuilder;
import org.apache.pulsar.client.api.ConsumerEventListener;
import org.apache.pulsar.client.api.Message;
import org.apache.pulsar.client.api.MessageId;
+import org.apache.pulsar.client.api.MessageRoutingMode;
import org.apache.pulsar.client.api.Producer;
-import org.apache.pulsar.client.api.ProducerConfiguration;
import org.apache.pulsar.client.api.PulsarClientException;
import org.apache.pulsar.client.api.SubscriptionType;
-import org.apache.pulsar.client.api.ProducerConfiguration.MessageRoutingMode;
import org.apache.pulsar.client.impl.MessageIdImpl;
import org.apache.pulsar.common.api.proto.PulsarApi.CommandSubscribe.SubType;
import org.apache.pulsar.common.naming.TopicName;
@@ -55,6 +53,7 @@ import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import com.google.common.collect.Lists;
+import com.google.common.collect.Sets;
public class PersistentFailoverE2ETest extends BrokerTestBase {
@@ -78,7 +77,7 @@ public class PersistentFailoverE2ETest extends BrokerTestBase {
final LinkedBlockingQueue<Integer> inActiveQueue = new LinkedBlockingQueue<>();
@Override
- public void becameActive(Consumer consumer, int partitionId) {
+ public void becameActive(Consumer<?> consumer, int partitionId) {
try {
activeQueue.put(partitionId);
} catch (InterruptedException e) {
@@ -86,7 +85,7 @@ public class PersistentFailoverE2ETest extends BrokerTestBase {
}
@Override
- public void becameInactive(Consumer consumer, int partitionId) {
+ public void becameInactive(Consumer<?> consumer, int partitionId) {
try {
inActiveQueue.put(partitionId);
} catch (InterruptedException e) {
@@ -115,13 +114,13 @@ public class PersistentFailoverE2ETest extends BrokerTestBase {
private final Set<Integer> inactivePtns = Sets.newHashSet();
@Override
- public synchronized void becameActive(Consumer consumer, int partitionId) {
+ public synchronized void becameActive(Consumer<?> consumer, int partitionId) {
activePtns.add(partitionId);
inactivePtns.remove(partitionId);
}
@Override
- public synchronized void becameInactive(Consumer consumer, int partitionId) {
+ public synchronized void becameInactive(Consumer<?> consumer, int partitionId) {
activePtns.remove(partitionId);
inactivePtns.add(partitionId);
}
@@ -134,20 +133,17 @@ public class PersistentFailoverE2ETest extends BrokerTestBase {
final int numMsgs = 100;
TestConsumerStateEventListener listener1 = new TestConsumerStateEventListener();
- ConsumerConfiguration consumerConf1 = new ConsumerConfiguration();
- consumerConf1.setSubscriptionType(SubscriptionType.Failover);
- consumerConf1.setConsumerName("1");
- consumerConf1.setConsumerEventListener(listener1);
-
TestConsumerStateEventListener listener2 = new TestConsumerStateEventListener();
- ConsumerConfiguration consumerConf2 = new ConsumerConfiguration();
- consumerConf2.setSubscriptionType(SubscriptionType.Failover);
- consumerConf2.setConsumerName("2");
- consumerConf2.setConsumerEventListener(listener2);
+ ConsumerBuilder<byte[]> consumerBuilder = pulsarClient.newConsumer().topic(topicName).subscriptionName(subName)
+ .subscriptionType(SubscriptionType.Failover);
+
// 1. two consumers on the same subscription
- Consumer consumer1 = pulsarClient.subscribe(topicName, subName, consumerConf1);
- Consumer consumer2 = pulsarClient.subscribe(topicName, subName, consumerConf2);
+ ConsumerBuilder<byte[]> consumerBulder1 = consumerBuilder.clone().consumerName("1")
+ .consumerEventListener(listener1);
+ Consumer<byte[]> consumer1 = consumerBulder1.subscribe();
+ Consumer<byte[]> consumer2 = consumerBuilder.clone().consumerName("2").consumerEventListener(listener2)
+ .subscribe();
verifyConsumerActive(listener1, -1);
verifyConsumerInactive(listener2, -1);
@@ -162,7 +158,7 @@ public class PersistentFailoverE2ETest extends BrokerTestBase {
assertEquals(subRef.getDispatcher().getType(), SubType.Failover);
List<CompletableFuture<MessageId>> futures = Lists.newArrayListWithCapacity(numMsgs);
- Producer producer = pulsarClient.createProducer(topicName);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName).create();
for (int i = 0; i < numMsgs; i++) {
String message = "my-message-" + i;
futures.add(producer.sendAsync(message.getBytes()));
@@ -176,7 +172,7 @@ public class PersistentFailoverE2ETest extends BrokerTestBase {
Thread.sleep(ASYNC_EVENT_COMPLETION_WAIT);
// 3. consumer1 should have all the messages while consumer2 should have no messages
- Message msg = null;
+ Message<byte[]> msg = null;
Assert.assertNull(consumer2.receive(1, TimeUnit.SECONDS));
for (int i = 0; i < numMsgs; i++) {
msg = consumer1.receive(1, TimeUnit.SECONDS);
@@ -242,7 +238,7 @@ public class PersistentFailoverE2ETest extends BrokerTestBase {
Assert.assertEquals(new String(msg.getData()), "my-message-" + i);
consumer2.acknowledge(msg);
}
- consumer1 = pulsarClient.subscribe(topicName, subName, consumerConf1);
+ consumer1 = consumerBulder1.subscribe();
Thread.sleep(CONSUMER_ADD_OR_REMOVE_WAIT_TIME);
for (int i = 5; i < numMsgs; i++) {
msg = consumer1.receive(1, TimeUnit.SECONDS);
@@ -264,18 +260,15 @@ public class PersistentFailoverE2ETest extends BrokerTestBase {
futures.clear();
// 7. consumer subscription should not send messages to the new consumer if its name is not highest in the list
- TestConsumerStateEventListener listener3 = new TestConsumerStateEventListener();
- ConsumerConfiguration consumerConf3 = new ConsumerConfiguration();
- consumerConf3.setSubscriptionType(SubscriptionType.Failover);
- consumerConf3.setConsumerName("3");
- consumerConf3.setConsumerEventListener(listener3);
for (int i = 0; i < 5; i++) {
msg = consumer1.receive(1, TimeUnit.SECONDS);
Assert.assertNotNull(msg);
Assert.assertEquals(new String(msg.getData()), "my-message-" + i);
consumer1.acknowledge(msg);
}
- Consumer consumer3 = pulsarClient.subscribe(topicName, subName, consumerConf3);
+ TestConsumerStateEventListener listener3 = new TestConsumerStateEventListener();
+ Consumer<byte[]> consumer3 = consumerBuilder.clone().consumerName("3").consumerEventListener(listener3)
+ .subscribe();
Thread.sleep(CONSUMER_ADD_OR_REMOVE_WAIT_TIME);
verifyConsumerInactive(listener3, -1);
@@ -333,24 +326,18 @@ public class PersistentFailoverE2ETest extends BrokerTestBase {
admin.persistentTopics().createPartitionedTopic(topicName, numPartitions);
- ProducerConfiguration producerConf = new ProducerConfiguration();
- producerConf.setMessageRoutingMode(MessageRoutingMode.RoundRobinPartition);
+ ConsumerBuilder<byte[]> consumerBuilder = pulsarClient.newConsumer().topic(topicName).subscriptionName(subName)
+ .subscriptionType(SubscriptionType.Failover);
- ActiveInactiveListenerEvent listener1 = new ActiveInactiveListenerEvent();
- ConsumerConfiguration consumerConf1 = new ConsumerConfiguration();
- consumerConf1.setSubscriptionType(SubscriptionType.Failover);
- consumerConf1.setConsumerName("1");
- consumerConf1.setConsumerEventListener(listener1);
+ // 1. two consumers on the same subscription
+ ActiveInactiveListenerEvent listener1 = new ActiveInactiveListenerEvent();
ActiveInactiveListenerEvent listener2 = new ActiveInactiveListenerEvent();
- ConsumerConfiguration consumerConf2 = new ConsumerConfiguration();
- consumerConf2.setSubscriptionType(SubscriptionType.Failover);
- consumerConf2.setConsumerName("2");
- consumerConf2.setConsumerEventListener(listener2);
- // 1. two consumers on the same subscription
- Consumer consumer1 = pulsarClient.subscribe(topicName, subName, consumerConf1);
- Consumer consumer2 = pulsarClient.subscribe(topicName, subName, consumerConf2);
+ Consumer<byte[]> consumer1 = consumerBuilder.clone().consumerName("1").consumerEventListener(listener1)
+ .subscribe();
+ Consumer<byte[]> consumer2 = consumerBuilder.clone().consumerName("2").consumerEventListener(listener2)
+ .subscribe();
PersistentTopic topicRef;
topicRef = (PersistentTopic) pulsar.getBrokerService().getTopicReference(destName.getPartition(0).toString());
@@ -367,7 +354,8 @@ public class PersistentFailoverE2ETest extends BrokerTestBase {
.getSubscription(subName).getDispatcher();
List<CompletableFuture<MessageId>> futures = Lists.newArrayListWithCapacity(numMsgs);
- Producer producer = pulsarClient.createProducer(topicName, producerConf);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName)
+ .messageRoutingMode(MessageRoutingMode.RoundRobinPartition).create();
for (int i = 0; i < numMsgs; i++) {
String message = "my-message-" + i;
futures.add(producer.sendAsync(message.getBytes()));
@@ -377,7 +365,7 @@ public class PersistentFailoverE2ETest extends BrokerTestBase {
// equal distribution between both consumers
int totalMessages = 0;
- Message msg = null;
+ Message<byte[]> msg = null;
Set<Integer> receivedPtns = Sets.newHashSet();
while (true) {
msg = consumer1.receive(1, TimeUnit.SECONDS);
@@ -410,10 +398,10 @@ public class PersistentFailoverE2ETest extends BrokerTestBase {
assertTrue(Sets.difference(listener2.activePtns, receivedPtns).isEmpty());
Assert.assertEquals(totalMessages, numMsgs);
- Assert.assertEquals(disp0.getActiveConsumer().consumerName(), consumerConf1.getConsumerName());
- Assert.assertEquals(disp1.getActiveConsumer().consumerName(), consumerConf2.getConsumerName());
- Assert.assertEquals(disp2.getActiveConsumer().consumerName(), consumerConf1.getConsumerName());
- Assert.assertEquals(disp3.getActiveConsumer().consumerName(), consumerConf2.getConsumerName());
+ Assert.assertEquals(disp0.getActiveConsumer().consumerName(), "1");
+ Assert.assertEquals(disp1.getActiveConsumer().consumerName(), "2");
+ Assert.assertEquals(disp2.getActiveConsumer().consumerName(), "1");
+ Assert.assertEquals(disp3.getActiveConsumer().consumerName(), "2");
totalMessages = 0;
for (int i = 0; i < numMsgs; i++) {
@@ -424,16 +412,13 @@ public class PersistentFailoverE2ETest extends BrokerTestBase {
futures.clear();
// add a consumer
- ConsumerConfiguration consumerConf3 = new ConsumerConfiguration();
- consumerConf3.setSubscriptionType(SubscriptionType.Failover);
- consumerConf3.setConsumerName("3");
for (int i = 0; i < 20; i++) {
msg = consumer1.receive(1, TimeUnit.SECONDS);
Assert.assertNotNull(msg);
uniqueMessages.add(new String(msg.getData()));
consumer1.acknowledge(msg);
}
- Consumer consumer3 = pulsarClient.subscribe(topicName, subName, consumerConf3);
+ Consumer<byte[]> consumer3 = consumerBuilder.clone().consumerName("3").subscribe();
Thread.sleep(CONSUMER_ADD_OR_REMOVE_WAIT_TIME);
int consumer1Messages = 0;
while (true) {
@@ -470,10 +455,10 @@ public class PersistentFailoverE2ETest extends BrokerTestBase {
}
Assert.assertEquals(uniqueMessages.size(), numMsgs);
- Assert.assertEquals(disp0.getActiveConsumer().consumerName(), consumerConf1.getConsumerName());
- Assert.assertEquals(disp1.getActiveConsumer().consumerName(), consumerConf2.getConsumerName());
- Assert.assertEquals(disp2.getActiveConsumer().consumerName(), consumerConf3.getConsumerName());
- Assert.assertEquals(disp3.getActiveConsumer().consumerName(), consumerConf1.getConsumerName());
+ Assert.assertEquals(disp0.getActiveConsumer().consumerName(), "1");
+ Assert.assertEquals(disp1.getActiveConsumer().consumerName(), "2");
+ Assert.assertEquals(disp2.getActiveConsumer().consumerName(), "3");
+ Assert.assertEquals(disp3.getActiveConsumer().consumerName(), "1");
uniqueMessages.clear();
for (int i = 0; i < numMsgs; i++) {
@@ -516,10 +501,10 @@ public class PersistentFailoverE2ETest extends BrokerTestBase {
}
Assert.assertEquals(uniqueMessages.size(), numMsgs);
- Assert.assertEquals(disp0.getActiveConsumer().consumerName(), consumerConf2.getConsumerName());
- Assert.assertEquals(disp1.getActiveConsumer().consumerName(), consumerConf3.getConsumerName());
- Assert.assertEquals(disp2.getActiveConsumer().consumerName(), consumerConf2.getConsumerName());
- Assert.assertEquals(disp3.getActiveConsumer().consumerName(), consumerConf3.getConsumerName());
+ Assert.assertEquals(disp0.getActiveConsumer().consumerName(), "2");
+ Assert.assertEquals(disp1.getActiveConsumer().consumerName(), "3");
+ Assert.assertEquals(disp2.getActiveConsumer().consumerName(), "2");
+ Assert.assertEquals(disp3.getActiveConsumer().consumerName(), "3");
producer.close();
consumer2.close();
@@ -533,48 +518,35 @@ public class PersistentFailoverE2ETest extends BrokerTestBase {
final String topicName = "persistent://prop/use/ns-abc/failover-topic3";
final String subName = "sub1";
final int numMsgs = 100;
- List<Message> receivedMessages = Lists.newArrayList();
-
- ConsumerConfiguration consumerConf1 = new ConsumerConfiguration();
- consumerConf1.setSubscriptionType(SubscriptionType.Failover);
- consumerConf1.setConsumerName("1");
- consumerConf1.setMessageListener((consumer, msg) -> {
- try {
- synchronized (receivedMessages) {
- receivedMessages.add(msg);
- }
- consumer.acknowledge(msg);
- } catch (Exception e) {
- fail("Should not fail");
- }
- });
-
- ConsumerConfiguration consumerConf2 = new ConsumerConfiguration();
- consumerConf2.setSubscriptionType(SubscriptionType.Failover);
- consumerConf2.setConsumerName("2");
- consumerConf2.setMessageListener((consumer, msg) -> {
- try {
- synchronized (receivedMessages) {
- receivedMessages.add(msg);
- }
- consumer.acknowledge(msg);
- } catch (Exception e) {
- fail("Should not fail");
- }
- });
+ List<Message<byte[]>> receivedMessages = Lists.newArrayList();
+
+ ConsumerBuilder<byte[]> consumerBuilder = pulsarClient.newConsumer().topic(topicName).subscriptionName(subName)
+ .subscriptionType(SubscriptionType.Failover).messageListener((consumer, msg) -> {
+ try {
+ synchronized (receivedMessages) {
+ receivedMessages.add(msg);
+ }
+ consumer.acknowledge(msg);
+ } catch (Exception e) {
+ fail("Should not fail");
+ }
+ });
+
+ ConsumerBuilder<byte[]> consumerBuilder1 = consumerBuilder.clone().consumerName("1");
+ ConsumerBuilder<byte[]> consumerBuilder2 = consumerBuilder.clone().consumerName("2");
conf.setActiveConsumerFailoverDelayTimeMillis(500);
restartBroker();
// create subscription
- Consumer consumer = pulsarClient.subscribe(topicName, subName, consumerConf1);
+ Consumer<byte[]> consumer = consumerBuilder1.subscribe();
consumer.close();
PersistentTopic topicRef = (PersistentTopic) pulsar.getBrokerService().getTopicReference(topicName);
PersistentSubscription subRef = topicRef.getSubscription(subName);
// enqueue messages
List<CompletableFuture<MessageId>> futures = Lists.newArrayListWithCapacity(numMsgs);
- Producer producer = pulsarClient.createProducer(topicName);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName).create();
for (int i = 0; i < numMsgs; i++) {
String message = "my-message-" + i;
futures.add(producer.sendAsync(message.getBytes()));
@@ -584,8 +556,8 @@ public class PersistentFailoverE2ETest extends BrokerTestBase {
producer.close();
// two consumers subscribe at almost the same time
- CompletableFuture<Consumer<byte[]>> subscribeFuture2 = pulsarClient.subscribeAsync(topicName, subName, consumerConf2);
- CompletableFuture<Consumer<byte[]>> subscribeFuture1 = pulsarClient.subscribeAsync(topicName, subName, consumerConf1);
+ CompletableFuture<Consumer<byte[]>> subscribeFuture2 = consumerBuilder2.subscribeAsync();
+ CompletableFuture<Consumer<byte[]>> subscribeFuture1 = consumerBuilder1.subscribeAsync();
// wait for all messages to be dequeued
int retry = 20;
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/PersistentQueueE2ETest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/PersistentQueueE2ETest.java
index f311f4c..8cc11d7 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/PersistentQueueE2ETest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/PersistentQueueE2ETest.java
@@ -36,15 +36,13 @@ import org.apache.commons.collections.CollectionUtils;
import org.apache.pulsar.broker.service.persistent.PersistentSubscription;
import org.apache.pulsar.broker.service.persistent.PersistentTopic;
import org.apache.pulsar.client.api.Consumer;
-import org.apache.pulsar.client.api.ConsumerConfiguration;
+import org.apache.pulsar.client.api.ConsumerBuilder;
import org.apache.pulsar.client.api.Message;
import org.apache.pulsar.client.api.MessageId;
import org.apache.pulsar.client.api.Producer;
-import org.apache.pulsar.client.api.ProducerConfiguration;
import org.apache.pulsar.client.api.PulsarClientException;
import org.apache.pulsar.client.api.SubscriptionType;
import org.apache.pulsar.client.impl.ConsumerImpl;
-import org.apache.pulsar.client.impl.MessageIdImpl;
import org.apache.pulsar.common.api.proto.PulsarApi.CommandSubscribe.SubType;
import org.apache.pulsar.common.policies.data.ConsumerStats;
import org.apache.pulsar.common.policies.data.PersistentTopicStats;
@@ -83,12 +81,12 @@ public class PersistentQueueE2ETest extends BrokerTestBase {
final String subName = "sub1";
final int numMsgs = 100;
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setSubscriptionType(SubscriptionType.Shared);
+ ConsumerBuilder<byte[]> consumerBuilder = pulsarClient.newConsumer().topic(topicName).subscriptionName(subName)
+ .subscriptionType(SubscriptionType.Shared);
// 1. two consumers on the same subscription
- Consumer consumer1 = pulsarClient.subscribe(topicName, subName, conf);
- Consumer consumer2 = pulsarClient.subscribe(topicName, subName, conf);
+ Consumer<byte[]> consumer1 = consumerBuilder.subscribe();
+ Consumer<byte[]> consumer2 = consumerBuilder.subscribe();
PersistentTopic topicRef = (PersistentTopic) pulsar.getBrokerService().getTopicReference(topicName);
PersistentSubscription subRef = topicRef.getSubscription(subName);
@@ -101,7 +99,7 @@ public class PersistentQueueE2ETest extends BrokerTestBase {
assertEquals(subRef.getDispatcher().getType(), SubType.Shared);
List<CompletableFuture<MessageId>> futures = Lists.newArrayListWithCapacity(numMsgs * 2);
- Producer producer = pulsarClient.createProducer(topicName);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName).create();
for (int i = 0; i < numMsgs * 2; i++) {
String message = "my-message-" + i;
futures.add(producer.sendAsync(message.getBytes()));
@@ -114,14 +112,15 @@ public class PersistentQueueE2ETest extends BrokerTestBase {
Thread.sleep(ASYNC_EVENT_COMPLETION_WAIT);
// both consumers will together consumer all messages
- Message msg;
- Consumer c = consumer1;
+ Message<byte[]> msg;
+ Consumer<byte[]> c = consumer1;
while (true) {
try {
msg = c.receive(1, TimeUnit.SECONDS);
c.acknowledge(msg);
} catch (PulsarClientException e) {
if (c.equals(consumer1)) {
+ consumer1.close();
c = consumer2;
} else {
break;
@@ -181,34 +180,24 @@ public class PersistentQueueE2ETest extends BrokerTestBase {
final List<String> messagesProduced = Lists.newArrayListWithCapacity(numMsgs);
final List<String> messagesConsumed = new BlockingArrayQueue<>(numMsgs);
- ConsumerConfiguration conf1 = new ConsumerConfiguration();
- conf1.setSubscriptionType(SubscriptionType.Shared);
- conf1.setMessageListener((consumer, msg) -> {
- try {
- consumer.acknowledge(msg);
- messagesConsumed.add(new String(msg.getData()));
- } catch (Exception e) {
- fail("Should not fail");
- }
- });
-
- ConsumerConfiguration conf2 = new ConsumerConfiguration();
- conf2.setSubscriptionType(SubscriptionType.Shared);
- conf2.setMessageListener((consumer, msg) -> {
- try {
- // do nothing
- } catch (Exception e) {
- fail("Should not fail");
- }
- });
-
- Consumer consumer1 = pulsarClient.subscribe(topicName, subName, conf1);
+ Consumer<byte[]> consumer1 = pulsarClient.newConsumer().topic(topicName).subscriptionName(subName)
+ .subscriptionType(SubscriptionType.Shared).messageListener((consumer, msg) -> {
+ try {
+ consumer.acknowledge(msg);
+ messagesConsumed.add(new String(msg.getData()));
+ } catch (Exception e) {
+ fail("Should not fail");
+ }
+ }).subscribe();
// consumer2 does not ack messages
- Consumer consumer2 = pulsarClient.subscribe(topicName, subName, conf2);
+ Consumer<byte[]> consumer2 = pulsarClient.newConsumer().topic(topicName).subscriptionName(subName)
+ .subscriptionType(SubscriptionType.Shared).messageListener((consumer, msg) -> {
+ // do notthing
+ }).subscribe();
List<CompletableFuture<MessageId>> futures = Lists.newArrayListWithCapacity(numMsgs * 2);
- Producer producer = pulsarClient.createProducer(topicName);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName).create();
for (int i = 0; i < numMsgs; i++) {
String message = "msg-" + i;
futures.add(producer.sendAsync(message.getBytes()));
@@ -241,40 +230,34 @@ public class PersistentQueueE2ETest extends BrokerTestBase {
final CountDownLatch latch = new CountDownLatch(numMsgs);
int recvQ1 = 10;
- ConsumerConfiguration conf1 = new ConsumerConfiguration();
- conf1.setSubscriptionType(SubscriptionType.Shared);
- conf1.setReceiverQueueSize(recvQ1);
- conf1.setMessageListener((consumer, msg) -> {
- msgCountConsumer1.incrementAndGet();
- try {
- consumer.acknowledge(msg);
- latch.countDown();
- } catch (PulsarClientException e) {
- fail("Should not fail");
- }
- });
+ Consumer<byte[]> consumer1 = pulsarClient.newConsumer().topic(topicName).subscriptionName(subName)
+ .subscriptionType(SubscriptionType.Shared).receiverQueueSize(recvQ1)
+ .messageListener((consumer, msg) -> {
+ msgCountConsumer1.incrementAndGet();
+ try {
+ consumer.acknowledge(msg);
+ latch.countDown();
+ } catch (PulsarClientException e) {
+ fail("Should not fail");
+ }
+ }).subscribe();
int recvQ2 = 1;
- ConsumerConfiguration conf2 = new ConsumerConfiguration();
- conf2.setSubscriptionType(SubscriptionType.Shared);
- conf2.setReceiverQueueSize(recvQ2);
- conf2.setMessageListener((consumer, msg) -> {
- msgCountConsumer2.incrementAndGet();
- try {
- consumer.acknowledge(msg);
- latch.countDown();
- } catch (PulsarClientException e) {
- fail("Should not fail");
- }
- });
-
- Consumer consumer1 = pulsarClient.subscribe(topicName, subName, conf1);
- Consumer consumer2 = pulsarClient.subscribe(topicName, subName, conf2);
+ Consumer<byte[]> consumer2 = pulsarClient.newConsumer().topic(topicName).subscriptionName(subName)
+ .subscriptionType(SubscriptionType.Shared).receiverQueueSize(recvQ2)
+ .messageListener((consumer, msg) -> {
+ msgCountConsumer2.incrementAndGet();
+ try {
+ consumer.acknowledge(msg);
+ latch.countDown();
+ } catch (PulsarClientException e) {
+ fail("Should not fail");
+ }
+ }).subscribe();
List<CompletableFuture<MessageId>> futures = Lists.newArrayListWithCapacity(numMsgs);
- ProducerConfiguration conf = new ProducerConfiguration();
- conf.setMaxPendingMessages(numMsgs + 1);
- Producer producer = pulsarClient.createProducer(topicName, conf);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName).maxPendingMessages(numMsgs + 1)
+ .create();
for (int i = 0; i < numMsgs; i++) {
String message = "msg-" + i;
futures.add(producer.sendAsync(message.getBytes()));
@@ -307,10 +290,10 @@ public class PersistentQueueE2ETest extends BrokerTestBase {
final CountDownLatch latch = new CountDownLatch(numMsgs * 3);
- ConsumerConfiguration conf1 = new ConsumerConfiguration();
- conf1.setSubscriptionType(SubscriptionType.Shared);
- conf1.setReceiverQueueSize(10);
- conf1.setMessageListener((consumer, msg) -> {
+ ConsumerBuilder<byte[]> consumerBuilder = pulsarClient.newConsumer().topic(topicName).subscriptionName(subName)
+ .receiverQueueSize(10).subscriptionType(SubscriptionType.Shared);
+
+ Consumer<byte[]> consumer1 = consumerBuilder.clone().messageListener((consumer, msg) -> {
try {
counter1.incrementAndGet();
consumer.acknowledge(msg);
@@ -318,12 +301,9 @@ public class PersistentQueueE2ETest extends BrokerTestBase {
} catch (Exception e) {
fail("Should not fail");
}
- });
+ }).subscribe();
- ConsumerConfiguration conf2 = new ConsumerConfiguration();
- conf2.setSubscriptionType(SubscriptionType.Shared);
- conf2.setReceiverQueueSize(10);
- conf2.setMessageListener((consumer, msg) -> {
+ Consumer<byte[]> consumer2 = consumerBuilder.clone().messageListener((consumer, msg) -> {
try {
counter2.incrementAndGet();
consumer.acknowledge(msg);
@@ -331,29 +311,20 @@ public class PersistentQueueE2ETest extends BrokerTestBase {
} catch (Exception e) {
fail("Should not fail");
}
- });
+ }).subscribe();
- ConsumerConfiguration conf3 = new ConsumerConfiguration();
- conf3.setSubscriptionType(SubscriptionType.Shared);
- conf3.setReceiverQueueSize(10);
- conf3.setMessageListener((consumer, msg) -> {
+ Consumer<byte[]> consumer3 = consumerBuilder.clone().messageListener((consumer, msg) -> {
try {
- counter3.incrementAndGet();
+ counter1.incrementAndGet();
consumer.acknowledge(msg);
latch.countDown();
} catch (Exception e) {
fail("Should not fail");
}
- });
-
- // subscribe and close, so that distribution can be checked after
- // all messages are published
- Consumer consumer1 = pulsarClient.subscribe(topicName, subName, conf1);
- Consumer consumer2 = pulsarClient.subscribe(topicName, subName, conf2);
- Consumer consumer3 = pulsarClient.subscribe(topicName, subName, conf3);
+ }).subscribe();
List<CompletableFuture<MessageId>> futures = Lists.newArrayListWithCapacity(numMsgs);
- Producer producer = pulsarClient.createProducer(topicName);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName).create();
for (int i = 0; i < numMsgs * 3; i++) {
String message = "msg-" + i;
futures.add(producer.sendAsync(message.getBytes()));
@@ -386,17 +357,16 @@ public class PersistentQueueE2ETest extends BrokerTestBase {
final int totalMessages = 50;
// 1. producer connect
- Producer producer = pulsarClient.createProducer(topicName);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName).create();
PersistentTopic topicRef = (PersistentTopic) pulsar.getBrokerService().getTopicReference(topicName);
assertNotNull(topicRef);
assertEquals(topicRef.getProducers().size(), 1);
// 2. Create consumer
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setReceiverQueueSize(10);
- conf.setSubscriptionType(SubscriptionType.Shared);
- Consumer consumer1 = pulsarClient.subscribe(topicName, subscriptionName, conf);
- Consumer consumer2 = pulsarClient.subscribe(topicName, subscriptionName, conf);
+ ConsumerBuilder<byte[]> consumerBuilder = pulsarClient.newConsumer().topic(topicName)
+ .subscriptionName(subscriptionName).receiverQueueSize(10).subscriptionType(SubscriptionType.Shared);
+ Consumer<byte[]> consumer1 = consumerBuilder.subscribe();
+ Consumer<byte[]> consumer2 = consumerBuilder.subscribe();
// 3. Producer publishes messages
for (int i = 0; i < totalMessages; i++) {
@@ -407,8 +377,8 @@ public class PersistentQueueE2ETest extends BrokerTestBase {
// 4. Receive messages
int receivedConsumer1 = 0, receivedConsumer2 = 0;
- Message message1 = consumer1.receive();
- Message message2 = consumer2.receive();
+ Message<byte[]> message1 = consumer1.receive();
+ Message<byte[]> message2 = consumer2.receive();
do {
if (message1 != null) {
log.info("Consumer 1 Received: " + new String(message1.getData()));
@@ -453,17 +423,16 @@ public class PersistentQueueE2ETest extends BrokerTestBase {
final int totalMessages = 10;
// 1. producer connect
- Producer producer = pulsarClient.createProducer(topicName);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName).create();
PersistentTopic topicRef = (PersistentTopic) pulsar.getBrokerService().getTopicReference(topicName);
assertNotNull(topicRef);
assertEquals(topicRef.getProducers().size(), 1);
// 2. Create consumer
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setReceiverQueueSize(1000);
- conf.setSubscriptionType(SubscriptionType.Shared);
- Consumer consumer1 = pulsarClient.subscribe(topicName, subscriptionName, conf);
- Consumer consumer2 = pulsarClient.subscribe(topicName, subscriptionName, conf);
+ ConsumerBuilder<byte[]> consumerBuilder = pulsarClient.newConsumer().topic(topicName)
+ .subscriptionName(subscriptionName).receiverQueueSize(1000).subscriptionType(SubscriptionType.Shared);
+ Consumer<byte[]> consumer1 = consumerBuilder.subscribe();
+ Consumer<byte[]> consumer2 = consumerBuilder.subscribe();
// 3. Producer publishes messages
for (int i = 0; i < totalMessages; i++) {
@@ -474,8 +443,8 @@ public class PersistentQueueE2ETest extends BrokerTestBase {
// 4. Receive messages
int receivedConsumer1 = 0, receivedConsumer2 = 0;
- Message message1 = consumer1.receive();
- Message message2 = consumer2.receive();
+ Message<byte[]> message1 = consumer1.receive();
+ Message<byte[]> message2 = consumer2.receive();
do {
if (message1 != null) {
log.info("Consumer 1 Received: " + new String(message1.getData()));
@@ -508,7 +477,7 @@ public class PersistentQueueE2ETest extends BrokerTestBase {
}
// 7. Consumer reconnects
- consumer1 = pulsarClient.subscribe(topicName, subscriptionName, conf);
+ consumer1 = consumerBuilder.subscribe();
// 8. Check number of messages received
receivedConsumer1 = 0;
@@ -528,12 +497,11 @@ public class PersistentQueueE2ETest extends BrokerTestBase {
final String subName = "sub3";
final int numMsgs = 10;
- Producer producer = pulsarClient.createProducer(topicName);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName).create();
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setSubscriptionType(SubscriptionType.Shared);
- conf.setReceiverQueueSize(0);
- ConsumerImpl consumer1 = (ConsumerImpl) pulsarClient.subscribe(topicName, subName, conf);
+ ConsumerBuilder<byte[]> consumerBuilder = pulsarClient.newConsumer().topic(topicName).subscriptionName(subName)
+ .receiverQueueSize(10).subscriptionType(SubscriptionType.Shared);
+ ConsumerImpl<byte[]> consumer1 = (ConsumerImpl<byte[]>) consumerBuilder.subscribe();
for (int i = 0; i < numMsgs; i++) {
producer.send(("hello-" + i).getBytes());
@@ -547,7 +515,7 @@ public class PersistentQueueE2ETest extends BrokerTestBase {
}
// C-2 will not get any message initially, since everything went to C-1 already
- Consumer consumer2 = pulsarClient.subscribe(topicName, subName, conf);
+ Consumer<byte[]> consumer2 = consumerBuilder.subscribe();
// Trigger C-1 to redeliver everything, half will go C-1 again and the other half to C-2
consumer1.redeliverUnacknowledgedMessages(c1_receivedMessages);
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/PersistentTopicConcurrentTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/PersistentTopicConcurrentTest.java
index eda685a..52c976d 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/PersistentTopicConcurrentTest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/PersistentTopicConcurrentTest.java
@@ -65,7 +65,9 @@ public class PersistentTopicConcurrentTest extends MockedBookKeeperTestCase {
private BrokerService brokerService;
private ManagedLedgerFactory mlFactoryMock;
private ServerCnx serverCnx;
+ @SuppressWarnings("unused")
private ManagedLedger ledgerMock;
+ @SuppressWarnings("unused")
private ManagedCursor cursorMock;
final String successTopicName = "persistent://prop/use/ns-abc/successTopic";
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/PersistentTopicE2ETest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/PersistentTopicE2ETest.java
index ad46179..8b82c88 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/PersistentTopicE2ETest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/PersistentTopicE2ETest.java
@@ -18,12 +18,6 @@
*/
package org.apache.pulsar.broker.service;
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.anyObject;
-import static org.mockito.Matchers.anyString;
-import static org.mockito.Mockito.doAnswer;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.mock;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertFalse;
import static org.testng.Assert.assertNotNull;
@@ -32,10 +26,8 @@ import static org.testng.Assert.assertTrue;
import static org.testng.Assert.fail;
import java.lang.reflect.Field;
-import java.util.ArrayList;
import java.util.List;
import java.util.Map;
-import java.util.TreeSet;
import java.util.concurrent.Callable;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.CountDownLatch;
@@ -46,26 +38,20 @@ import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import org.apache.bookkeeper.mledger.ManagedCursor;
-import org.apache.bookkeeper.mledger.ManagedLedger;
-import org.apache.bookkeeper.mledger.ManagedLedgerConfig;
-import org.apache.bookkeeper.mledger.AsyncCallbacks.OpenLedgerCallback;
import org.apache.bookkeeper.mledger.impl.EntryCacheImpl;
import org.apache.bookkeeper.mledger.impl.ManagedLedgerFactoryImpl;
import org.apache.bookkeeper.mledger.impl.ManagedLedgerImpl;
-import org.apache.bookkeeper.mledger.impl.PositionImpl;
-import org.apache.pulsar.broker.service.BrokerService;
import org.apache.pulsar.broker.service.persistent.PersistentDispatcherMultipleConsumers;
import org.apache.pulsar.broker.service.persistent.PersistentSubscription;
import org.apache.pulsar.broker.service.persistent.PersistentTopic;
import org.apache.pulsar.client.admin.PulsarAdminException;
import org.apache.pulsar.client.api.CompressionType;
import org.apache.pulsar.client.api.Consumer;
-import org.apache.pulsar.client.api.ConsumerConfiguration;
import org.apache.pulsar.client.api.Message;
import org.apache.pulsar.client.api.MessageBuilder;
import org.apache.pulsar.client.api.MessageId;
import org.apache.pulsar.client.api.Producer;
-import org.apache.pulsar.client.api.ProducerConfiguration;
+import org.apache.pulsar.client.api.ProducerBuilder;
import org.apache.pulsar.client.api.PulsarClient;
import org.apache.pulsar.client.api.PulsarClientException;
import org.apache.pulsar.client.api.PulsarClientException.ProducerBusyException;
@@ -79,16 +65,12 @@ import org.apache.pulsar.common.policies.data.RetentionPolicies;
import org.apache.pulsar.common.stats.Metrics;
import org.apache.pulsar.common.util.collections.ConcurrentLongPairSet;
import org.apache.pulsar.policies.data.loadbalancer.NamespaceBundleStats;
-import org.mockito.invocation.InvocationOnMock;
-import org.mockito.stubbing.Answer;
import org.testng.Assert;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
-import com.google.common.collect.Sets;
-
/**
*/
@Test
@@ -110,7 +92,7 @@ public class PersistentTopicE2ETest extends BrokerTestBase {
final String topicName = "persistent://prop/use/ns-abc/topic0";
// 1. producer connect
- Producer producer = pulsarClient.createProducer(topicName);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName).create();
PersistentTopic topicRef = (PersistentTopic) pulsar.getBrokerService().getTopicReference(topicName);
assertNotNull(topicRef);
@@ -138,11 +120,8 @@ public class PersistentTopicE2ETest extends BrokerTestBase {
final String subName = "sub1";
final int numMsgs = 10;
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setSubscriptionType(SubscriptionType.Exclusive);
-
// 1. client connect
- Consumer consumer = pulsarClient.subscribe(topicName, subName, conf);
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topicName).subscriptionName(subName).subscribe();
PersistentTopic topicRef = (PersistentTopic) pulsar.getBrokerService().getTopicReference(topicName);
PersistentSubscription subRef = topicRef.getSubscription(subName);
@@ -154,7 +133,7 @@ public class PersistentTopicE2ETest extends BrokerTestBase {
Thread.sleep(ASYNC_EVENT_COMPLETION_WAIT);
assertEquals(getAvailablePermits(subRef), 1000 /* default */);
- Producer producer = pulsarClient.createProducer(topicName);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName).create();
for (int i = 0; i < numMsgs * 2; i++) {
String message = "my-message-" + i;
producer.send(message.getBytes());
@@ -168,7 +147,7 @@ public class PersistentTopicE2ETest extends BrokerTestBase {
Thread.sleep(ASYNC_EVENT_COMPLETION_WAIT);
assertEquals(getAvailablePermits(subRef), 1000 - numMsgs * 2);
- Message msg = null;
+ Message<byte[]> msg = null;
for (int i = 0; i < numMsgs; i++) {
msg = consumer.receive();
// 3. in-order message delivery
@@ -223,15 +202,12 @@ public class PersistentTopicE2ETest extends BrokerTestBase {
final String topicName = "persistent://prop/use/ns-abc/topic2";
final String subName = "sub2";
- Message msg;
+ Message<byte[]> msg;
int recvQueueSize = 4;
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setSubscriptionType(SubscriptionType.Exclusive);
- conf.setReceiverQueueSize(recvQueueSize);
-
- Consumer consumer = pulsarClient.subscribe(topicName, subName, conf);
- Producer producer = pulsarClient.createProducer(topicName);
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topicName).subscriptionName(subName)
+ .receiverQueueSize(recvQueueSize).subscribe();
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName).create();
PersistentTopic topicRef = (PersistentTopic) pulsar.getBrokerService().getTopicReference(topicName);
assertNotNull(topicRef);
@@ -269,16 +245,13 @@ public class PersistentTopicE2ETest extends BrokerTestBase {
final String topicName = "persistent://prop/use/ns-abc/topic2";
final String subName = "sub2";
- Message msg;
+ Message<byte[]> msg;
int recvQueueSize = 4;
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setSubscriptionType(SubscriptionType.Exclusive);
- conf.setReceiverQueueSize(recvQueueSize);
-
// (1) Create subscription
- Consumer consumer = pulsarClient.subscribe(topicName, subName, conf);
- Producer producer = pulsarClient.createProducer(topicName);
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topicName).subscriptionName(subName)
+ .receiverQueueSize(recvQueueSize).subscribe();
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName).create();
// (2) Produce Messages
for (int i = 0; i < recvQueueSize / 2; i++) {
@@ -329,10 +302,6 @@ public class PersistentTopicE2ETest extends BrokerTestBase {
final int recvQueueSize = 100;
final int numConsumersThreads = 10;
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setSubscriptionType(SubscriptionType.Exclusive);
- conf.setReceiverQueueSize(recvQueueSize);
-
ExecutorService executor = Executors.newCachedThreadPool();
final CyclicBarrier barrier = new CyclicBarrier(numConsumersThreads + 1);
@@ -342,9 +311,10 @@ public class PersistentTopicE2ETest extends BrokerTestBase {
public Void call() throws Exception {
barrier.await();
- Consumer consumer = pulsarClient.subscribe(topicName, subName, conf);
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topicName).subscriptionName(subName)
+ .receiverQueueSize(recvQueueSize).subscribe();
for (int i = 0; i < recvQueueSize / numConsumersThreads; i++) {
- Message msg = consumer.receive();
+ Message<byte[]> msg = consumer.receive();
consumer.acknowledge(msg);
}
return null;
@@ -352,7 +322,7 @@ public class PersistentTopicE2ETest extends BrokerTestBase {
});
}
- Producer producer = pulsarClient.createProducer(topicName);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName).create();
for (int i = 0; i < recvQueueSize * numConsumersThreads; i++) {
String message = "my-message-" + i;
producer.send(message.getBytes());
@@ -370,6 +340,7 @@ public class PersistentTopicE2ETest extends BrokerTestBase {
// 2. flow control works the same as single consumer single thread
Thread.sleep(ASYNC_EVENT_COMPLETION_WAIT);
assertEquals(getAvailablePermits(subRef), recvQueueSize);
+ executor.shutdown();
}
@Test(enabled = false)
@@ -378,7 +349,7 @@ public class PersistentTopicE2ETest extends BrokerTestBase {
final String topicName = "persistent://prop/use/ns-abc/topic4";
final String subName = "sub4";
- Producer producer = pulsarClient.createProducer(topicName);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName).create();
Thread.sleep(ASYNC_EVENT_COMPLETION_WAIT);
PersistentTopic topicRef = (PersistentTopic) pulsar.getBrokerService().getTopicReference(topicName);
@@ -405,14 +376,12 @@ public class PersistentTopicE2ETest extends BrokerTestBase {
// wait for the spawned thread to complete
latch.await();
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setSubscriptionType(SubscriptionType.Exclusive);
- Consumer consumer = pulsarClient.subscribe(topicName, subName, conf);
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topicName).subscriptionName(subName).subscribe();
PersistentSubscription subRef = topicRef.getSubscription(subName);
assertNotNull(subRef);
- Message msg = null;
+ Message<byte[]> msg = null;
for (int i = 0; i < 10; i++) {
msg = consumer.receive();
}
@@ -433,6 +402,8 @@ public class PersistentTopicE2ETest extends BrokerTestBase {
consumer.close();
Thread.sleep(ASYNC_EVENT_COMPLETION_WAIT);
assertTrue(subRef.getDispatcher().isConsumerConnected());
+
+ executor.shutdown();
}
@Test
@@ -440,18 +411,15 @@ public class PersistentTopicE2ETest extends BrokerTestBase {
final String topicName = "persistent://prop/use/ns-abc/topic5";
final String subName = "sub5";
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setSubscriptionType(SubscriptionType.Exclusive);
-
- Consumer consumer = pulsarClient.subscribe(topicName, subName, conf);
- Producer producer = pulsarClient.createProducer(topicName);
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topicName).subscriptionName(subName).subscribe();
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName).create();
PersistentTopic topicRef = (PersistentTopic) pulsar.getBrokerService().getTopicReference(topicName);
assertNotNull(topicRef);
PersistentSubscription subRef = topicRef.getSubscription(subName);
assertNotNull(subRef);
- Message msg;
+ Message<byte[]> msg;
for (int i = 0; i < 10; i++) {
String message = "my-message-" + i;
producer.send(message.getBytes());
@@ -471,13 +439,10 @@ public class PersistentTopicE2ETest extends BrokerTestBase {
final String topicName = "persistent://prop/use/ns-abc/topic6";
final String subName = "sub6";
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setSubscriptionType(SubscriptionType.Exclusive);
-
- pulsarClient.subscribe(topicName, subName, conf);
- pulsarClient.createProducer(topicName);
+ pulsarClient.newConsumer().topic(topicName).subscriptionName(subName).subscribe();
+ pulsarClient.newProducer().topic(topicName).create();
try {
- pulsarClient.subscribe(topicName, subName, conf);
+ pulsarClient.newConsumer().topic(topicName).subscriptionName(subName).subscribe();
fail("Should have thrown an exception since one consumer is already connected");
} catch (PulsarClientException cce) {
Assert.assertTrue(cce.getMessage().contains("Exclusive consumer is already connected"));
@@ -489,19 +454,16 @@ public class PersistentTopicE2ETest extends BrokerTestBase {
final String topicName = "persistent://prop/use/ns-abc/topic7";
final String subName = "sub7";
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setSubscriptionType(SubscriptionType.Exclusive);
-
- PulsarClient client1 = PulsarClient.create(brokerUrl.toString());
- PulsarClient client2 = PulsarClient.create(brokerUrl.toString());
+ PulsarClient client1 = PulsarClient.builder().serviceUrl(brokerUrl.toString()).build();
+ PulsarClient client2 = PulsarClient.builder().serviceUrl(brokerUrl.toString()).build();
try {
- client1.subscribe(topicName, subName, conf);
- client1.createProducer(topicName);
+ client1.newConsumer().topic(topicName).subscriptionName(subName).subscribe();
+ client1.newProducer().topic(topicName).create();
- client2.createProducer(topicName);
+ client2.newProducer().topic(topicName).create();
- client2.subscribe(topicName, subName, conf);
+ client2.newConsumer().topic(topicName).subscriptionName(subName).subscribe();
fail("Should have thrown an exception since one consumer is already connected");
} catch (PulsarClientException cce) {
Assert.assertTrue(cce.getMessage().contains("Exclusive consumer is already connected"));
@@ -516,11 +478,8 @@ public class PersistentTopicE2ETest extends BrokerTestBase {
final String topicName = "persistent://prop/use/ns-abc/topic8";
final String subName = "sub1";
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setSubscriptionType(SubscriptionType.Exclusive);
-
// 1. client connect
- Consumer consumer = pulsarClient.subscribe(topicName, subName, conf);
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topicName).subscriptionName(subName).subscribe();
PersistentTopic topicRef = (PersistentTopic) pulsar.getBrokerService().getTopicReference(topicName);
PersistentSubscription subRef = topicRef.getSubscription(subName);
@@ -550,7 +509,7 @@ public class PersistentTopicE2ETest extends BrokerTestBase {
public void testUnloadNamespace() throws Exception {
String topic = "persistent://prop/use/ns-abc/topic-9";
TopicName topicName = TopicName.get(topic);
- pulsarClient.createProducer(topic);
+ pulsarClient.newProducer().topic(topic).create();
pulsarClient.close();
assertTrue(pulsar.getBrokerService().getTopicReference(topic) != null);
@@ -579,7 +538,7 @@ public class PersistentTopicE2ETest extends BrokerTestBase {
public void testGC() throws Exception {
// 1. Simple successful GC
String topicName = "persistent://prop/use/ns-abc/topic-10";
- Producer producer = pulsarClient.createProducer(topicName);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName).create();
producer.close();
assertNotNull(pulsar.getBrokerService().getTopicReference(topicName));
@@ -587,10 +546,8 @@ public class PersistentTopicE2ETest extends BrokerTestBase {
assertNull(pulsar.getBrokerService().getTopicReference(topicName));
// 2. Topic is not GCed with live connection
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setSubscriptionType(SubscriptionType.Exclusive);
String subName = "sub1";
- Consumer consumer = pulsarClient.subscribe(topicName, subName, conf);
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topicName).subscriptionName(subName).subscribe();
runGC();
assertNotNull(pulsar.getBrokerService().getTopicReference(topicName));
@@ -609,8 +566,8 @@ public class PersistentTopicE2ETest extends BrokerTestBase {
}
/**
- * A topic that has retention policy set to non-0, should not be GCed
- * until it has been inactive for at least the retention time.
+ * A topic that has retention policy set to non-0, should not be GCed until it has been inactive for at least the
+ * retention time.
*/
@Test
public void testGcAndRetentionPolicy() throws Exception {
@@ -620,7 +577,7 @@ public class PersistentTopicE2ETest extends BrokerTestBase {
// 1. Simple successful GC
String topicName = "persistent://prop/use/ns-abc/topic-10";
- Producer producer = pulsarClient.createProducer(topicName);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName).create();
producer.close();
assertNotNull(pulsar.getBrokerService().getTopicReference(topicName));
@@ -628,16 +585,13 @@ public class PersistentTopicE2ETest extends BrokerTestBase {
// Should not have been deleted, since we have retention
assertNotNull(pulsar.getBrokerService().getTopicReference(topicName));
-
// Remove retention
admin.namespaces().setRetention("prop/use/ns-abc", new RetentionPolicies(0, 10));
Thread.sleep(300);
// 2. Topic is not GCed with live connection
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setSubscriptionType(SubscriptionType.Exclusive);
String subName = "sub1";
- Consumer consumer = pulsarClient.subscribe(topicName, subName, conf);
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topicName).subscriptionName(subName).subscribe();
runGC();
assertNotNull(pulsar.getBrokerService().getTopicReference(topicName));
@@ -656,9 +610,8 @@ public class PersistentTopicE2ETest extends BrokerTestBase {
}
/**
- * A topic that has retention policy set to -1, should not be GCed
- * until it has been inactive for at least the retention time and the data
- * should never be deleted
+ * A topic that has retention policy set to -1, should not be GCed until it has been inactive for at least the
+ * retention time and the data should never be deleted
*/
@Test
public void testInfiniteRetentionPolicy() throws Exception {
@@ -667,7 +620,7 @@ public class PersistentTopicE2ETest extends BrokerTestBase {
// 1. Simple successful GC
String topicName = "persistent://prop/use/ns-abc/topic-10";
- Producer producer = pulsarClient.createProducer(topicName);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName).create();
producer.close();
assertNotNull(pulsar.getBrokerService().getTopicReference(topicName));
@@ -675,16 +628,13 @@ public class PersistentTopicE2ETest extends BrokerTestBase {
// Should not have been deleted, since we have retention
assertNotNull(pulsar.getBrokerService().getTopicReference(topicName));
-
// Remove retention
admin.namespaces().setRetention("prop/use/ns-abc", new RetentionPolicies(0, 10));
Thread.sleep(300);
// 2. Topic is not GCed with live connection
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setSubscriptionType(SubscriptionType.Exclusive);
String subName = "sub1";
- Consumer consumer = pulsarClient.subscribe(topicName, subName, conf);
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topicName).subscriptionName(subName).subscribe();
runGC();
assertNotNull(pulsar.getBrokerService().getTopicReference(topicName));
@@ -714,10 +664,7 @@ public class PersistentTopicE2ETest extends BrokerTestBase {
final String subName = "sub1";
final int numMsgs = 10;
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setSubscriptionType(SubscriptionType.Exclusive);
-
- Consumer consumer = pulsarClient.subscribe(topicName, subName, conf);
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topicName).subscriptionName(subName).subscribe();
PersistentTopic topicRef = (PersistentTopic) pulsar.getBrokerService().getTopicReference(topicName);
PersistentSubscription subRef = topicRef.getSubscription(subName);
@@ -725,7 +672,7 @@ public class PersistentTopicE2ETest extends BrokerTestBase {
consumer.close();
assertFalse(subRef.getDispatcher().isConsumerConnected());
- Producer producer = pulsarClient.createProducer(topicName);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName).create();
for (int i = 0; i < numMsgs; i++) {
String message = "my-message-" + i;
producer.send(message.getBytes());
@@ -760,17 +707,14 @@ public class PersistentTopicE2ETest extends BrokerTestBase {
final String subName = "sub1";
final int numMsgs = 10;
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setSubscriptionType(SubscriptionType.Exclusive);
-
- pulsarClient.subscribe(topicName, subName, conf);
+ pulsarClient.newConsumer().topic(topicName).subscriptionName(subName).subscribe();
PersistentTopic topicRef = (PersistentTopic) pulsar.getBrokerService().getTopicReference(topicName);
PersistentSubscription subRef = topicRef.getSubscription(subName);
assertTrue(subRef.getDispatcher().isConsumerConnected());
- Producer producer = pulsarClient.createProducer(topicName);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName).create();
for (int i = 0; i < numMsgs; i++) {
String message = "my-message-" + i;
producer.send(message.getBytes());
@@ -795,25 +739,18 @@ public class PersistentTopicE2ETest extends BrokerTestBase {
final String topicName = "persistent://prop/use/ns-abc/shared-topic2";
final String subName = "sub2";
- ConsumerConfiguration conf1 = new ConsumerConfiguration();
- conf1.setSubscriptionType(SubscriptionType.Exclusive);
-
- ConsumerConfiguration conf2 = new ConsumerConfiguration();
- conf2.setSubscriptionType(SubscriptionType.Shared);
-
- ConsumerConfiguration conf3 = new ConsumerConfiguration();
- conf3.setSubscriptionType(SubscriptionType.Failover);
-
- Consumer consumer1 = pulsarClient.subscribe(topicName, subName, conf1);
- Consumer consumer2 = null;
- Consumer consumer3 = null;
+ Consumer<byte[]> consumer1 = pulsarClient.newConsumer().topic(topicName).subscriptionName(subName)
+ .subscriptionType(SubscriptionType.Exclusive).subscribe();
+ Consumer<byte[]> consumer2 = null;
+ Consumer<byte[]> consumer3 = null;
PersistentTopic topicRef = (PersistentTopic) pulsar.getBrokerService().getTopicReference(topicName);
PersistentSubscription subRef = topicRef.getSubscription(subName);
// 1. shared consumer on an exclusive sub fails
try {
- consumer2 = pulsarClient.subscribe(topicName, subName, conf2);
+ consumer2 = pulsarClient.newConsumer().topic(topicName).subscriptionName(subName)
+ .subscriptionType(SubscriptionType.Shared).subscribe();
fail("should have failed");
} catch (PulsarClientException e) {
assertTrue(e.getMessage().contains("Subscription is of different type"));
@@ -821,7 +758,8 @@ public class PersistentTopicE2ETest extends BrokerTestBase {
// 2. failover consumer on an exclusive sub fails
try {
- consumer3 = pulsarClient.subscribe(topicName, subName, conf3);
+ consumer3 = pulsarClient.newConsumer().topic(topicName).subscriptionName(subName)
+ .subscriptionType(SubscriptionType.Failover).subscribe();
fail("should have failed");
} catch (PulsarClientException e) {
assertTrue(e.getMessage().contains("Subscription is of different type"));
@@ -830,7 +768,8 @@ public class PersistentTopicE2ETest extends BrokerTestBase {
// 3. disconnected sub can be converted in shared
consumer1.close();
try {
- consumer2 = pulsarClient.subscribe(topicName, subName, conf2);
+ consumer2 = pulsarClient.newConsumer().topic(topicName).subscriptionName(subName)
+ .subscriptionType(SubscriptionType.Shared).subscribe();
assertEquals(subRef.getDispatcher().getType(), SubType.Shared);
} catch (PulsarClientException e) {
fail("should not fail");
@@ -838,7 +777,8 @@ public class PersistentTopicE2ETest extends BrokerTestBase {
// 4. exclusive fails on shared sub
try {
- consumer1 = pulsarClient.subscribe(topicName, subName, conf1);
+ consumer1 = pulsarClient.newConsumer().topic(topicName).subscriptionName(subName)
+ .subscriptionType(SubscriptionType.Exclusive).subscribe();
fail("should have failed");
} catch (PulsarClientException e) {
assertTrue(e.getMessage().contains("Subscription is of different type"));
@@ -847,7 +787,8 @@ public class PersistentTopicE2ETest extends BrokerTestBase {
// 5. disconnected sub can be converted in failover
consumer2.close();
try {
- consumer3 = pulsarClient.subscribe(topicName, subName, conf3);
+ consumer3 = pulsarClient.newConsumer().topic(topicName).subscriptionName(subName)
+ .subscriptionType(SubscriptionType.Failover).subscribe();
assertEquals(subRef.getDispatcher().getType(), SubType.Failover);
} catch (PulsarClientException e) {
fail("should not fail");
@@ -856,7 +797,8 @@ public class PersistentTopicE2ETest extends BrokerTestBase {
// 5. exclusive consumer can connect after failover disconnects
consumer3.close();
try {
- consumer1 = pulsarClient.subscribe(topicName, subName, conf1);
+ consumer1 = pulsarClient.newConsumer().topic(topicName).subscriptionName(subName)
+ .subscriptionType(SubscriptionType.Exclusive).subscribe();
assertEquals(subRef.getDispatcher().getType(), SubType.Exclusive);
} catch (PulsarClientException e) {
fail("should not fail");
@@ -871,16 +813,13 @@ public class PersistentTopicE2ETest extends BrokerTestBase {
final String topicName = "persistent://prop/use/ns-abc/topic-receive-timeout";
final String subName = "sub";
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setSubscriptionType(SubscriptionType.Exclusive);
- conf.setReceiverQueueSize(1000);
-
- ConsumerImpl consumer = (ConsumerImpl) pulsarClient.subscribe(topicName, subName, conf);
- Producer producer = pulsarClient.createProducer(topicName);
+ ConsumerImpl<byte[]> consumer = (ConsumerImpl<byte[]>) pulsarClient.newConsumer().topic(topicName)
+ .subscriptionName(subName).receiverQueueSize(1000).subscribe();
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName).create();
assertEquals(consumer.getAvailablePermits(), 0);
- Message msg = consumer.receive(10, TimeUnit.MILLISECONDS);
+ Message<byte[]> msg = consumer.receive(10, TimeUnit.MILLISECONDS);
assertNull(msg);
assertEquals(consumer.getAvailablePermits(), 0);
@@ -903,7 +842,7 @@ public class PersistentTopicE2ETest extends BrokerTestBase {
final String topicName = "persistent://prop/use/ns-abc/topic-xyz";
// 1. producer connect
- Producer producer = pulsarClient.createProducer(topicName);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName).create();
PersistentTopic topicRef = (PersistentTopic) pulsar.getBrokerService().getTopicReference(topicName);
assertNotNull(topicRef);
@@ -927,7 +866,7 @@ public class PersistentTopicE2ETest extends BrokerTestBase {
for (int i = SyncMessages; i < (SyncMessages + AsyncMessages); i++) {
String content = "my-message-" + i;
- Message msg = MessageBuilder.create().setContent(content.getBytes()).build();
+ Message<byte[]> msg = MessageBuilder.create().setContent(content.getBytes()).build();
final int index = i;
producer.sendAsync(msg).thenRun(() -> {
@@ -949,12 +888,11 @@ public class PersistentTopicE2ETest extends BrokerTestBase {
final String topicName = "persistent://prop/use/ns-abc/topic-xyzx";
final int messages = 10;
- PulsarClient client = PulsarClient.create(brokerUrl.toString());
+ PulsarClient client = PulsarClient.builder().serviceUrl(brokerUrl.toString()).build();
// 1. Producer connect
- ProducerConfiguration producerConfiguration = new ProducerConfiguration().setMaxPendingMessages(messages)
- .setBlockIfQueueFull(true).setSendTimeout(1, TimeUnit.SECONDS);
- ProducerImpl producer = (ProducerImpl) client.createProducer(topicName, producerConfiguration);
+ ProducerImpl<byte[]> producer = (ProducerImpl<byte[]>) client.newProducer().topic(topicName)
+ .maxPendingMessages(messages).blockIfQueueFull(true).sendTimeout(1, TimeUnit.SECONDS).create();
// 2. Stop broker
cleanup();
@@ -993,10 +931,9 @@ public class PersistentTopicE2ETest extends BrokerTestBase {
final int messages = 10;
// 1. Producer connect
- PulsarClient client = PulsarClient.create(brokerUrl.toString());
- ProducerConfiguration producerConfiguration = new ProducerConfiguration().setMaxPendingMessages(messages)
- .setBlockIfQueueFull(false).setSendTimeout(1, TimeUnit.SECONDS);
- ProducerImpl producer = (ProducerImpl) client.createProducer(topicName, producerConfiguration);
+ PulsarClient client = PulsarClient.builder().serviceUrl(brokerUrl.toString()).build();
+ ProducerImpl<byte[]> producer = (ProducerImpl<byte[]>) client.newProducer().topic(topicName)
+ .maxPendingMessages(messages).blockIfQueueFull(false).sendTimeout(1, TimeUnit.SECONDS).create();
// 2. Stop broker
cleanup();
@@ -1038,8 +975,9 @@ public class PersistentTopicE2ETest extends BrokerTestBase {
BrokerService brokerService = pulsar.getBrokerService();
// 1. producers connect
- Producer producer1 = pulsarClient.createProducer("persistent://prop/use/ns-abc/topic-1");
- Producer producer2 = pulsarClient.createProducer("persistent://prop/use/ns-abc/topic-2");
+ Producer<byte[]> producer1 = pulsarClient.newProducer().topic("persistent://prop/use/ns-abc/topic-1").create();
+ /* Producer<byte[]> producer2 = */ pulsarClient.newProducer().topic("persistent://prop/use/ns-abc/topic-2")
+ .create();
brokerService.updateRates();
@@ -1078,11 +1016,9 @@ public class PersistentTopicE2ETest extends BrokerTestBase {
final String topicName = "persistent://prop/use/ns-abc/topic0" + compressionType;
// 1. producer connect
- ProducerConfiguration producerConf = new ProducerConfiguration();
- producerConf.setCompressionType(compressionType);
- Producer producer = pulsarClient.createProducer(topicName, producerConf);
-
- Consumer consumer = pulsarClient.subscribe(topicName, "my-sub");
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName).compressionType(compressionType)
+ .create();
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topicName).subscriptionName("my-sub").subscribe();
PersistentTopic topicRef = (PersistentTopic) pulsar.getBrokerService().getTopicReference(topicName);
assertNotNull(topicRef);
@@ -1095,7 +1031,7 @@ public class PersistentTopicE2ETest extends BrokerTestBase {
}
for (int i = 0; i < 10; i++) {
- Message msg = consumer.receive(5, TimeUnit.SECONDS);
+ Message<byte[]> msg = consumer.receive(5, TimeUnit.SECONDS);
assertNotNull(msg);
assertEquals(msg.getData(), ("my-message-" + i).getBytes());
}
@@ -1116,8 +1052,7 @@ public class PersistentTopicE2ETest extends BrokerTestBase {
statsUpdater.shutdown();
final String namespace = "prop/use/ns-abc";
- ProducerConfiguration producerConf = new ProducerConfiguration();
- Producer producer = pulsarClient.createProducer("persistent://" + namespace + "/topic0", producerConf);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic("persistent://" + namespace + "/topic0").create();
// 1. producer publish messages
for (int i = 0; i < 10; i++) {
String message = "my-message-" + i;
@@ -1146,11 +1081,10 @@ public class PersistentTopicE2ETest extends BrokerTestBase {
final String topicName = "persistent://prop/use/ns-abc/topic1";
// 1. producer connect
- Producer producer = pulsarClient.createProducer(topicName);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName).create();
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topicName).subscriptionName("my-sub").subscribe();
- Consumer consumer = pulsarClient.subscribe(topicName, "my-sub");
-
- Message msg1 = MessageBuilder.create().setContent("message-1".getBytes()).build();
+ Message<byte[]> msg1 = MessageBuilder.create().setContent("message-1".getBytes()).build();
CompletableFuture<MessageId> future1 = producer.sendAsync(msg1);
// Stop the broker, and publishes messages. Messages are accumulated in the producer queue and they're checksums
@@ -1158,8 +1092,7 @@ public class PersistentTopicE2ETest extends BrokerTestBase {
// checksum validation error
stopBroker();
-
- Message msg2 = MessageBuilder.create().setContent("message-2".getBytes()).build();
+ Message<byte[]> msg2 = MessageBuilder.create().setContent("message-2".getBytes()).build();
CompletableFuture<MessageId> future2 = producer.sendAsync(msg2);
// Taint msg2
@@ -1178,7 +1111,7 @@ public class PersistentTopicE2ETest extends BrokerTestBase {
}
// We should only receive msg1
- Message msg = consumer.receive(1, TimeUnit.SECONDS);
+ Message<byte[]> msg = consumer.receive(1, TimeUnit.SECONDS);
assertEquals(new String(msg.getData()), "message-1");
while ((msg = consumer.receive(1, TimeUnit.SECONDS)) != null) {
@@ -1187,25 +1120,23 @@ public class PersistentTopicE2ETest extends BrokerTestBase {
}
/**
- * Verify: Broker should not replay already acknowledged messages again and should clear them from messageReplay bucket
+ * Verify: Broker should not replay already acknowledged messages again and should clear them from messageReplay
+ * bucket
*
- * 1. produce messages
- * 2. consume messages and ack all except 1 msg
- * 3. Verification: should replay only 1 unacked message
+ * 1. produce messages 2. consume messages and ack all except 1 msg 3. Verification: should replay only 1 unacked
+ * message
*/
@Test()
public void testMessageRedelivery() throws Exception {
final String topicName = "persistent://prop/use/ns-abc/topic2";
final String subName = "sub2";
- Message msg;
+ Message<byte[]> msg;
int totalMessages = 10;
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setSubscriptionType(SubscriptionType.Shared);
-
- Consumer consumer = pulsarClient.subscribe(topicName, subName, conf);
- Producer producer = pulsarClient.createProducer(topicName);
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topicName).subscriptionName(subName)
+ .subscriptionType(SubscriptionType.Shared).subscribe();
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName).create();
// (1) Produce messages
for (int i = 0; i < totalMessages; i++) {
@@ -1213,8 +1144,8 @@ public class PersistentTopicE2ETest extends BrokerTestBase {
producer.send(message.getBytes());
}
- //(2) Consume and ack messages except first message
- Message unAckedMsg = null;
+ // (2) Consume and ack messages except first message
+ Message<byte[]> unAckedMsg = null;
for (int i = 0; i < totalMessages; i++) {
msg = consumer.receive();
if (i == 0) {
@@ -1243,10 +1174,8 @@ public class PersistentTopicE2ETest extends BrokerTestBase {
}
/**
- * Verify:
- * 1. Broker should not replay already acknowledged messages
- * 2. Dispatcher should not stuck while dispatching new messages due to previous-replay
- * of invalid/already-acked messages
+ * Verify: 1. Broker should not replay already acknowledged messages 2. Dispatcher should not stuck while
+ * dispatching new messages due to previous-replay of invalid/already-acked messages
*
* @throws Exception
*/
@@ -1256,16 +1185,13 @@ public class PersistentTopicE2ETest extends BrokerTestBase {
final String topicName = "persistent://prop/use/ns-abc/topic2";
final String subName = "sub2";
- Message msg;
+ Message<byte[]> msg;
int totalMessages = 10;
int replayIndex = totalMessages / 2;
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setSubscriptionType(SubscriptionType.Shared);
- conf.setReceiverQueueSize(1);
-
- Consumer consumer = pulsarClient.subscribe(topicName, subName, conf);
- Producer producer = pulsarClient.createProducer(topicName);
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topicName).subscriptionName(subName)
+ .subscriptionType(SubscriptionType.Shared).receiverQueueSize(1).subscribe();
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName).create();
PersistentTopic topicRef = (PersistentTopic) pulsar.getBrokerService().getTopicReference(topicName);
assertNotNull(topicRef);
@@ -1327,13 +1253,12 @@ public class PersistentTopicE2ETest extends BrokerTestBase {
public void testCreateProducerWithSameName() throws Exception {
String topic = "persistent://prop/use/ns-abc/testCreateProducerWithSameName";
- ProducerConfiguration conf = new ProducerConfiguration();
- conf.setProducerName("test-producer-a");
-
- Producer p1 = pulsarClient.createProducer(topic, conf);
+ ProducerBuilder<byte[]> producerBuilder = pulsarClient.newProducer().topic(topic)
+ .producerName("test-producer-a");
+ Producer<byte[]> p1 = producerBuilder.create();
try {
- pulsarClient.createProducer(topic, conf);
+ producerBuilder.create();
fail("Should have thrown ProducerBusyException");
} catch (ProducerBusyException e) {
// Expected
@@ -1342,7 +1267,7 @@ public class PersistentTopicE2ETest extends BrokerTestBase {
p1.close();
// Now p2 should succeed
- Producer p2 = pulsarClient.createProducer(topic, conf);
+ Producer<byte[]> p2 = producerBuilder.create();
p2.close();
}
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/PersistentTopicTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/PersistentTopicTest.java
index 655ccab..2f0f350 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/PersistentTopicTest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/PersistentTopicTest.java
@@ -701,7 +701,7 @@ public class PersistentTopicTest {
try {
Thread.sleep(10); /* delay to ensure that the ubsubscribe gets executed first */
- Consumer consumer2 = new Consumer(sub, SubType.Exclusive, topic.getName(), 2 /* consumer id */, 0, "Cons2"/* consumer name */,
+ new Consumer(sub, SubType.Exclusive, topic.getName(), 2 /* consumer id */, 0, "Cons2"/* consumer name */,
50000, serverCnx, "myrole-1", Collections.emptyMap(), false /* read compacted */);
} catch (BrokerServiceException e) {
assertTrue(e instanceof BrokerServiceException.SubscriptionFencedException);
@@ -907,7 +907,7 @@ public class PersistentTopicTest {
doReturn(new ArrayList<Object>()).when(ledgerMock).getCursors();
doReturn("mockCursor").when(cursorMock).getName();
// doNothing().when(cursorMock).asyncClose(new CloseCallback() {
- doAnswer(new Answer() {
+ doAnswer(new Answer<Object>() {
@Override
public Object answer(InvocationOnMock invocationOnMock) throws Throwable {
// return closeFuture.get();
@@ -1159,7 +1159,7 @@ public class PersistentTopicTest {
final URL brokerUrl = new URL(
"http://" + pulsar.getAdvertisedAddress() + ":" + pulsar.getConfiguration().getBrokerServicePort());
- PulsarClient client = PulsarClient.create(brokerUrl.toString());
+ PulsarClient client = PulsarClient.builder().serviceUrl(brokerUrl.toString()).build();
ManagedCursor cursor = mock(ManagedCursorImpl.class);
doReturn(remoteCluster).when(cursor).getName();
brokerService.getReplicationClients().put(remoteCluster, client);
@@ -1189,6 +1189,7 @@ public class PersistentTopicTest {
callback.deleteCursorComplete(null);
}
+ @SuppressWarnings("unchecked")
@Test
public void testClosingReplicationProducerTwice() throws Exception {
final String globalTopicName = "persistent://prop/global/ns/testClosingReplicationProducerTwice";
@@ -1202,7 +1203,7 @@ public class PersistentTopicTest {
final URL brokerUrl = new URL(
"http://" + pulsar.getAdvertisedAddress() + ":" + pulsar.getConfiguration().getBrokerServicePort());
- PulsarClient client = spy( PulsarClient.create(brokerUrl.toString()) );
+ PulsarClient client = spy(PulsarClient.builder().serviceUrl(brokerUrl.toString()).build());
PulsarClientImpl clientImpl = (PulsarClientImpl) client;
ManagedCursor cursor = mock(ManagedCursorImpl.class);
@@ -1258,9 +1259,7 @@ public class PersistentTopicTest {
PersistentTopic topic = new PersistentTopic(successTopicName, ledgerMock, brokerService);
CompactedTopic compactedTopic = mock(CompactedTopic.class);
- PersistentSubscription sub = new CompactorSubscription(topic, compactedTopic,
- Compactor.COMPACTION_SUBSCRIPTION,
- cursorMock);
+ new CompactorSubscription(topic, compactedTopic, Compactor.COMPACTION_SUBSCRIPTION, cursorMock);
verify(compactedTopic, Mockito.times(1)).newCompactedLedger(position, ledgerId);
}
}
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/ReplicatorTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/ReplicatorTest.java
index 170ee2d..3b3565f 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/ReplicatorTest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/ReplicatorTest.java
@@ -24,8 +24,6 @@ import static org.testng.Assert.assertNull;
import static org.testng.Assert.assertTrue;
import static org.testng.Assert.fail;
-import com.scurrilous.circe.checksum.Crc32cIntChecksum;
-import io.netty.buffer.ByteBuf;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.List;
@@ -39,6 +37,7 @@ import java.util.concurrent.Executors;
import java.util.concurrent.ForkJoinPool;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
+
import org.apache.bookkeeper.mledger.AsyncCallbacks.DeleteCursorCallback;
import org.apache.bookkeeper.mledger.AsyncCallbacks.ReadEntriesCallback;
import org.apache.bookkeeper.mledger.Entry;
@@ -53,7 +52,6 @@ import org.apache.pulsar.broker.service.BrokerServiceException.NamingException;
import org.apache.pulsar.broker.service.persistent.PersistentReplicator;
import org.apache.pulsar.broker.service.persistent.PersistentTopic;
import org.apache.pulsar.client.admin.PulsarAdminException.PreconditionFailedException;
-import org.apache.pulsar.client.api.ClientConfiguration;
import org.apache.pulsar.client.api.MessageBuilder;
import org.apache.pulsar.client.api.Producer;
import org.apache.pulsar.client.api.PulsarClient;
@@ -82,6 +80,10 @@ import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import org.testng.collections.Lists;
+import com.scurrilous.circe.checksum.Crc32cIntChecksum;
+
+import io.netty.buffer.ByteBuf;
+
/**
* Starts 2 brokers that are in 2 different clusters
*/
@@ -94,7 +96,6 @@ public class ReplicatorTest extends ReplicatorTestBase {
methodName = m.getName();
}
-
@Override
@BeforeClass(timeOut = 30000)
void setup() throws Exception {
@@ -126,8 +127,7 @@ public class ReplicatorTest extends ReplicatorTestBase {
// Run a set of producer tasks to create the topics
List<Future<Void>> results = Lists.newArrayList();
for (int i = 0; i < 10; i++) {
- final TopicName dest = TopicName
- .get(String.format("persistent://pulsar/global/ns/topic-%d", i));
+ final TopicName dest = TopicName.get(String.format("persistent://pulsar/global/ns/topic-%d", i));
results.add(executor.submit(new Callable<Void>() {
@Override
@@ -203,6 +203,7 @@ public class ReplicatorTest extends ReplicatorTestBase {
// Case 3: TODO: Once automatic cleanup is implemented, add tests case to verify auto removal of clusters
}
+ @SuppressWarnings("unchecked")
@Test(timeOut = 30000)
public void testConcurrentReplicator() throws Exception {
@@ -211,13 +212,13 @@ public class ReplicatorTest extends ReplicatorTestBase {
final String namespace = "pulsar/global/concurrent";
admin1.namespaces().createNamespace(namespace);
admin1.namespaces().setNamespaceReplicationClusters(namespace, Lists.newArrayList("r1", "r2"));
- final TopicName dest = TopicName.get(String.format("persistent://" + namespace + "/topic-%d", 0));
- ClientConfiguration conf = new ClientConfiguration();
- conf.setStatsInterval(0, TimeUnit.SECONDS);
- Producer producer = PulsarClient.create(url1.toString(), conf).createProducer(dest.toString());
+ final TopicName topicName = TopicName.get(String.format("persistent://" + namespace + "/topic-%d", 0));
+ PulsarClient client1 = PulsarClient.builder().serviceUrl(url1.toString()).statsInterval(0, TimeUnit.SECONDS)
+ .build();
+ Producer<byte[]> producer = client1.newProducer().topic(topicName.toString()).create();
producer.close();
- PersistentTopic topic = (PersistentTopic) pulsar1.getBrokerService().getTopic(dest.toString()).get();
+ PersistentTopic topic = (PersistentTopic) pulsar1.getBrokerService().getTopic(topicName.toString()).get();
PulsarClientImpl pulsarClient = spy((PulsarClientImpl) pulsar1.getBrokerService().getReplicationClient("r3"));
final Method startRepl = PersistentTopic.class.getDeclaredMethod("startReplicator", String.class);
@@ -242,12 +243,10 @@ public class ReplicatorTest extends ReplicatorTestBase {
}
Thread.sleep(3000);
- Mockito.verify(pulsarClient, Mockito.times(1))
- .createProducerAsync(
- Mockito.any(ProducerConfigurationData.class),
- Mockito.any(Schema.class)
- );
+ Mockito.verify(pulsarClient, Mockito.times(1)).createProducerAsync(Mockito.any(ProducerConfigurationData.class),
+ Mockito.any(Schema.class));
+ client1.shutdown();
}
@Test(enabled = false, timeOut = 30000)
@@ -295,8 +294,7 @@ public class ReplicatorTest extends ReplicatorTestBase {
SortedSet<String> testDests = new TreeSet<String>();
List<Future<Void>> results = Lists.newArrayList();
for (int i = 0; i < 3; i++) {
- final TopicName dest = TopicName
- .get(String.format("persistent://pulsar/global/ns/repltopic-%d", i));
+ final TopicName dest = TopicName.get(String.format("persistent://pulsar/global/ns/repltopic-%d", i));
testDests.add(dest.toString());
results.add(executor.submit(new Callable<Void>() {
@@ -396,8 +394,7 @@ public class ReplicatorTest extends ReplicatorTestBase {
SortedSet<String> testDests = new TreeSet<String>();
List<Future<Void>> results = Lists.newArrayList();
for (int i = 0; i < 10; i++) {
- final TopicName dest = TopicName
- .get(String.format("persistent://pulsar/global/ns/repltopic-%d", i));
+ final TopicName dest = TopicName.get(String.format("persistent://pulsar/global/ns/repltopic-%d", i));
testDests.add(dest.toString());
results.add(executor.submit(new Callable<Void>() {
@@ -422,11 +419,6 @@ public class ReplicatorTest extends ReplicatorTestBase {
MessageConsumer consumer3 = new MessageConsumer(url3, dest);
log.info("--- Starting Consumer --- " + url3);
- // Produce from cluster1 for this test
- int nr1 = 0;
- int nr2 = 0;
- int nR3 = 0;
-
// Produce a message that isn't replicated
producer1.produce(1, MessageBuilder.create().disableReplication());
@@ -476,8 +468,7 @@ public class ReplicatorTest extends ReplicatorTestBase {
try {
// 1. Create a consumer using the reserved consumer id prefix "pulsar.repl."
- final TopicName dest = TopicName
- .get(String.format("persistent://pulsar/global/ns/res-cons-id"));
+ final TopicName dest = TopicName.get(String.format("persistent://pulsar/global/ns/res-cons-id"));
// Create another consumer using replication prefix as sub id
MessageConsumer consumer = new MessageConsumer(url2, dest, "pulsar.repl.");
@@ -504,7 +495,8 @@ public class ReplicatorTest extends ReplicatorTestBase {
producer1.produce(2);
producer1.close();
PersistentTopic topic = (PersistentTopic) pulsar1.getBrokerService().getTopicReference(dest.toString());
- PersistentReplicator replicator = (PersistentReplicator) topic.getReplicators().get(topic.getReplicators().keys().get(0));
+ PersistentReplicator replicator = (PersistentReplicator) topic.getReplicators()
+ .get(topic.getReplicators().keys().get(0));
replicator.skipMessages(2);
CompletableFuture<Entry> result = replicator.peekNthMessage(1);
Entry entry = result.get(50, TimeUnit.MILLISECONDS);
@@ -528,7 +520,8 @@ public class ReplicatorTest extends ReplicatorTestBase {
producer1.produce(2);
producer1.close();
PersistentTopic topic = (PersistentTopic) pulsar1.getBrokerService().getTopicReference(dest.toString());
- PersistentReplicator replicator = (PersistentReplicator) spy(topic.getReplicators().get(topic.getReplicators().keys().get(0)));
+ PersistentReplicator replicator = (PersistentReplicator) spy(
+ topic.getReplicators().get(topic.getReplicators().keys().get(0)));
replicator.readEntriesFailed(new ManagedLedgerException.InvalidCursorPositionException("failed"), null);
replicator.clearBacklog().get();
Thread.sleep(100);
@@ -548,8 +541,7 @@ public class ReplicatorTest extends ReplicatorTestBase {
SortedSet<String> testDests = new TreeSet<String>();
List<Future<Void>> results = Lists.newArrayList();
for (int i = 0; i < 1; i++) {
- final TopicName dest = TopicName
- .get(String.format("persistent://pulsar/global/ns/resetrepltopic-%d", i));
+ final TopicName dest = TopicName.get(String.format("persistent://pulsar/global/ns/resetrepltopic-%d", i));
testDests.add(dest.toString());
results.add(executor.submit(new Callable<Void>() {
@@ -594,8 +586,7 @@ public class ReplicatorTest extends ReplicatorTestBase {
SortedSet<String> testDests = new TreeSet<String>();
List<Future<Void>> results = Lists.newArrayList();
for (int i = 0; i < 3; i++) {
- final TopicName dest = TopicName
- .get(String.format("persistent://pulsar/global/ns/repltopicbatch-%d", i));
+ final TopicName dest = TopicName.get(String.format("persistent://pulsar/global/ns/repltopicbatch-%d", i));
testDests.add(dest.toString());
results.add(executor.submit(new Callable<Void>() {
@@ -638,6 +629,12 @@ public class ReplicatorTest extends ReplicatorTestBase {
consumer3.receive(10);
+ producer1.close();
+ producer2.close();
+ producer3.close();
+ consumer1.close();
+ consumer2.close();
+ consumer3.close();
return null;
}
}));
@@ -688,6 +685,7 @@ public class ReplicatorTest extends ReplicatorTestBase {
removeReplicator.setAccessible(true);
// invoke removeReplicator : it fails as cursor is not present: but still it should remove the replicator from
// list without restarting it
+ @SuppressWarnings("unchecked")
CompletableFuture<Void> result = (CompletableFuture<Void>) removeReplicator.invoke(topic,
replicatorClusterName);
result.thenApply((v) -> {
@@ -698,6 +696,7 @@ public class ReplicatorTest extends ReplicatorTestBase {
producer1.close();
}
+ @SuppressWarnings("unchecked")
@Test(priority = 5, timeOut = 30000)
public void testReplicatorProducerClosing() throws Exception {
log.info("--- Starting ReplicatorTest::testDeleteReplicatorFailure ---");
@@ -713,7 +712,7 @@ public class ReplicatorTest extends ReplicatorTestBase {
Thread.sleep(100);
Field field = AbstractReplicator.class.getDeclaredField("producer");
field.setAccessible(true);
- ProducerImpl producer = (ProducerImpl) field.get(replicator);
+ ProducerImpl<byte[]> producer = (ProducerImpl<byte[]>) field.get(replicator);
assertNull(producer);
producer1.close();
}
@@ -751,7 +750,8 @@ public class ReplicatorTest extends ReplicatorTestBase {
PersistentTopic topic = (PersistentTopic) pulsar1.getBrokerService().getTopicReference(dest.toString());
Replicator replicator = topic.getPersistentReplicator("r2");
- // Produce 1 message in r1. This message will be replicated immediately into r2 and it will become part of local backlog
+ // Produce 1 message in r1. This message will be replicated immediately into r2 and it will become part of
+ // local backlog
producer1.produce(1);
Thread.sleep(500);
@@ -842,7 +842,8 @@ public class ReplicatorTest extends ReplicatorTestBase {
// Replicator producer must be closed
Field producerField = AbstractReplicator.class.getDeclaredField("producer");
producerField.setAccessible(true);
- ProducerImpl replicatorProducer = (ProducerImpl) producerField.get(replicator);
+ @SuppressWarnings("unchecked")
+ ProducerImpl<byte[]> replicatorProducer = (ProducerImpl<byte[]>) producerField.get(replicator);
assertEquals(replicatorProducer, null);
producer1.close();
@@ -854,10 +855,10 @@ public class ReplicatorTest extends ReplicatorTestBase {
public void verifyChecksumAfterReplication() throws Exception {
final String topicName = "persistent://pulsar/global/ns/checksumAfterReplication";
- PulsarClient c1 = PulsarClient.create(url1.toString());
- Producer p1 = c1.createProducer(topicName);
+ PulsarClient c1 = PulsarClient.builder().serviceUrl(url1.toString()).build();
+ Producer<byte[]> p1 = c1.newProducer().topic(topicName).create();
- PulsarClient c2 = PulsarClient.create(url2.toString());
+ PulsarClient c2 = PulsarClient.builder().serviceUrl(url2.toString()).build();
RawReader reader2 = RawReader.create(c2, topicName, "sub").get();
p1.send("Hello".getBytes());
@@ -901,8 +902,8 @@ public class ReplicatorTest extends ReplicatorTestBase {
}
// load namespace with dummy topic on ns
- PulsarClient client = PulsarClient.create(url1.toString());
- client.createProducer("persistent://" + namespace + "/dummyTopic");
+ PulsarClient client = PulsarClient.builder().serviceUrl(url1.toString()).build();
+ client.newProducer().topic("persistent://" + namespace + "/dummyTopic").create();
// persistent topic test
try {
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/ReplicatorTestBase.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/ReplicatorTestBase.java
index d71f484..abde142 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/ReplicatorTestBase.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/ReplicatorTestBase.java
@@ -32,16 +32,14 @@ import java.util.concurrent.TimeUnit;
import org.apache.bookkeeper.test.PortManager;
import org.apache.pulsar.broker.PulsarService;
import org.apache.pulsar.broker.ServiceConfiguration;
-import org.apache.pulsar.broker.service.BrokerService;
import org.apache.pulsar.client.admin.PulsarAdmin;
import org.apache.pulsar.client.api.Authentication;
-import org.apache.pulsar.client.api.ClientConfiguration;
import org.apache.pulsar.client.api.Consumer;
import org.apache.pulsar.client.api.Message;
import org.apache.pulsar.client.api.MessageBuilder;
import org.apache.pulsar.client.api.MessageId;
import org.apache.pulsar.client.api.Producer;
-import org.apache.pulsar.client.api.ProducerConfiguration;
+import org.apache.pulsar.client.api.ProducerBuilder;
import org.apache.pulsar.client.api.PulsarClient;
import org.apache.pulsar.common.naming.TopicName;
import org.apache.pulsar.common.policies.data.ClusterData;
@@ -263,16 +261,14 @@ public class ReplicatorTestBase {
String namespace;
String topicName;
PulsarClient client;
- Producer producer;
+ Producer<byte[]> producer;
MessageProducer(URL url, final TopicName dest) throws Exception {
this.url = url;
this.namespace = dest.getNamespace();
this.topicName = dest.toString();
- ClientConfiguration conf = new ClientConfiguration();
- conf.setStatsInterval(0, TimeUnit.SECONDS);
- client = PulsarClient.create(url.toString(), conf);
- producer = client.createProducer(topicName);
+ client = PulsarClient.builder().serviceUrl(url.toString()).statsInterval(0, TimeUnit.SECONDS).build();
+ producer = client.newProducer().topic(topicName).create();
}
@@ -280,16 +276,14 @@ public class ReplicatorTestBase {
this.url = url;
this.namespace = dest.getNamespace();
this.topicName = dest.toString();
- ClientConfiguration conf = new ClientConfiguration();
- conf.setStatsInterval(0, TimeUnit.SECONDS);
- client = PulsarClient.create(url.toString(), conf);
- ProducerConfiguration producerConfiguration = new ProducerConfiguration();
+ client = PulsarClient.builder().serviceUrl(url.toString()).statsInterval(0, TimeUnit.SECONDS).build();
+ ProducerBuilder<byte[]> producerBuilder = client.newProducer().topic(topicName);
if (batch) {
- producerConfiguration.setBatchingEnabled(true);
- producerConfiguration.setBatchingMaxPublishDelay(1, TimeUnit.SECONDS);
- producerConfiguration.setBatchingMaxMessages(5);
+ producerBuilder.enableBatching(true);
+ producerBuilder.batchingMaxPublishDelay(1, TimeUnit.SECONDS);
+ producerBuilder.batchingMaxMessages(5);
}
- producer = client.createProducer(topicName, producerConfiguration);
+ producer = producerBuilder.create();
}
@@ -314,7 +308,7 @@ public class ReplicatorTestBase {
}
- void produce(int messages, MessageBuilder messageBuilder) throws Exception {
+ void produce(int messages, MessageBuilder<byte[]> messageBuilder) throws Exception {
log.info("Start sending messages");
for (int i = 0; i < messages; i++) {
final String m = new String("test-builder-" + i);
@@ -335,7 +329,7 @@ public class ReplicatorTestBase {
final String namespace;
final String topicName;
final PulsarClient client;
- final Consumer consumer;
+ final Consumer<byte[]> consumer;
MessageConsumer(URL url, final TopicName dest) throws Exception {
this(url, dest, "sub-id");
@@ -345,12 +339,11 @@ public class ReplicatorTestBase {
this.url = url;
this.namespace = dest.getNamespace();
this.topicName = dest.toString();
- ClientConfiguration conf = new ClientConfiguration();
- conf.setStatsInterval(0, TimeUnit.SECONDS);
- client = PulsarClient.create(url.toString(), conf);
+
+ client = PulsarClient.builder().serviceUrl(url.toString()).statsInterval(0, TimeUnit.SECONDS).build();
try {
- consumer = client.subscribe(topicName, subId);
+ consumer = client.newConsumer().topic(topicName).subscriptionName(subId).subscribe();
} catch (Exception e) {
client.close();
throw e;
@@ -359,7 +352,7 @@ public class ReplicatorTestBase {
void receive(int messages) throws Exception {
log.info("Start receiving messages");
- Message msg = null;
+ Message<byte[]> msg = null;
for (int i = 0; i < messages; i++) {
msg = consumer.receive();
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/ResendRequestTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/ResendRequestTest.java
index a429180..433904c 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/ResendRequestTest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/ResendRequestTest.java
@@ -30,13 +30,12 @@ import java.util.concurrent.TimeUnit;
import org.apache.pulsar.broker.service.persistent.PersistentTopic;
import org.apache.pulsar.client.api.Consumer;
-import org.apache.pulsar.client.api.ConsumerConfiguration;
+import org.apache.pulsar.client.api.ConsumerBuilder;
import org.apache.pulsar.client.api.Message;
import org.apache.pulsar.client.api.MessageId;
+import org.apache.pulsar.client.api.MessageRoutingMode;
import org.apache.pulsar.client.api.Producer;
-import org.apache.pulsar.client.api.ProducerConfiguration;
import org.apache.pulsar.client.api.SubscriptionType;
-import org.apache.pulsar.client.api.ProducerConfiguration.MessageRoutingMode;
import org.apache.pulsar.client.impl.ConsumerBase;
import org.apache.pulsar.common.policies.data.PropertyAdmin;
import org.slf4j.Logger;
@@ -74,16 +73,15 @@ public class ResendRequestTest extends BrokerTestBase {
HashSet<String> messageDataHashSet = new HashSet<String>();
// 1. producer connect
- Producer producer = pulsarClient.createProducer(topicName);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName).create();
PersistentTopic topicRef = (PersistentTopic) pulsar.getBrokerService().getTopicReference(topicName);
assertNotNull(topicRef);
assertEquals(topicRef.getProducers().size(), 1);
// 2. Create consumer
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setReceiverQueueSize(7);
- Consumer consumer = pulsarClient.subscribe(topicName, subscriptionName, conf);
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topicName).subscriptionName(subscriptionName)
+ .receiverQueueSize(7).subscribe();
// 3. producer publish messages
for (int i = 0; i < totalMessages; i++) {
@@ -92,11 +90,11 @@ public class ResendRequestTest extends BrokerTestBase {
}
// 4. Receive messages
- Message message = consumer.receive();
+ Message<byte[]> message = consumer.receive();
log.info("Message received " + new String(message.getData()));
-
+
for (int i = 1; i < totalMessages; i++) {
- Message msg = consumer.receive();
+ Message<byte[]> msg = consumer.receive();
log.info("Message received " + new String(msg.getData()));
messageDataHashSet.add(new String(msg.getData()));
}
@@ -107,7 +105,7 @@ public class ResendRequestTest extends BrokerTestBase {
log.info("Message acked " + new String(message.getData()));
messageIdHashSet.add(message.getMessageId());
messageDataHashSet.add(new String(message.getData()));
-
+
consumer.redeliverUnacknowledgedMessages();
log.info("Resend Messages Request sent");
@@ -138,7 +136,7 @@ public class ResendRequestTest extends BrokerTestBase {
messageDataHashSet.add(new String(message.getData()));
message = consumer.receive(5000, TimeUnit.MILLISECONDS);
}
-
+
assertEquals(messageIdHashSet.size(), totalMessages);
assertEquals(messageDataHashSet.size(), totalMessages);
printIncomingMessageQueue(consumer);
@@ -146,7 +144,7 @@ public class ResendRequestTest extends BrokerTestBase {
// 9. Calling resend after acking all messages - expectin 0 messages
consumer.redeliverUnacknowledgedMessages();
assertEquals(consumer.receive(2000, TimeUnit.MILLISECONDS), null);
-
+
// 10. Checking message contents
for (int i = 0; i < totalMessages; i++) {
assertTrue(messageDataHashSet.contains(messagePredicate + i));
@@ -161,17 +159,17 @@ public class ResendRequestTest extends BrokerTestBase {
final String messagePredicate = "my-message-" + key + "-";
final int totalMessages = 10;
// 1. producer connect
- Producer producer = pulsarClient.createProducer(topicName);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName).create();
PersistentTopic topicRef = (PersistentTopic) pulsar.getBrokerService().getTopicReference(topicName);
assertNotNull(topicRef);
assertEquals(topicRef.getProducers().size(), 1);
// 2. Create consumer
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setReceiverQueueSize(totalMessages / 2);
- conf.setSubscriptionType(SubscriptionType.Shared);
- Consumer consumer1 = pulsarClient.subscribe(topicName, subscriptionName, conf);
- Consumer consumer2 = pulsarClient.subscribe(topicName, subscriptionName, conf);
+ ConsumerBuilder<byte[]> consumerBuilder = pulsarClient.newConsumer().topic(topicName)
+ .subscriptionName(subscriptionName).receiverQueueSize(totalMessages / 2)
+ .subscriptionType(SubscriptionType.Shared);
+ Consumer<byte[]> consumer1 = consumerBuilder.subscribe();
+ Consumer<byte[]> consumer2 = consumerBuilder.subscribe();
// 3. Producer publishes messages
for (int i = 0; i < totalMessages; i++) {
@@ -182,8 +180,8 @@ public class ResendRequestTest extends BrokerTestBase {
// 4. Receive messages
int receivedConsumer1 = 0, receivedConsumer2 = 0;
- Message message1 = consumer1.receive();
- Message message2 = consumer2.receive();
+ Message<byte[]> message1 = consumer1.receive();
+ Message<byte[]> message2 = consumer2.receive();
do {
if (message1 != null) {
log.info("Consumer 1 Received: " + new String(message1.getData()));
@@ -241,19 +239,16 @@ public class ResendRequestTest extends BrokerTestBase {
final String messagePredicate = "my-message-" + key + "-";
final int totalMessages = 10;
// 1. producer connect
- Producer producer = pulsarClient.createProducer(topicName);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName).create();
PersistentTopic topicRef = (PersistentTopic) pulsar.getBrokerService().getTopicReference(topicName);
assertNotNull(topicRef);
assertEquals(topicRef.getProducers().size(), 1);
// 2. Create consumer
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setReceiverQueueSize(10);
- conf.setSubscriptionType(SubscriptionType.Failover);
- conf.setConsumerName("consumer-1");
- Consumer consumer1 = pulsarClient.subscribe(topicName, subscriptionName, conf);
- conf.setConsumerName("consumer-2");
- Consumer consumer2 = pulsarClient.subscribe(topicName, subscriptionName, conf);
+ ConsumerBuilder<byte[]> consumerBuilder = pulsarClient.newConsumer().topic(topicName)
+ .subscriptionName(subscriptionName).receiverQueueSize(10).subscriptionType(SubscriptionType.Failover);
+ Consumer<byte[]> consumer1 = consumerBuilder.clone().consumerName("consumer-1").subscribe();
+ Consumer<byte[]> consumer2 = consumerBuilder.clone().consumerName("consumer-2").subscribe();
// 3. Producer publishes messages
for (int i = 0; i < totalMessages; i++) {
@@ -264,8 +259,8 @@ public class ResendRequestTest extends BrokerTestBase {
// 4. Receive messages
int receivedConsumer1 = 0, receivedConsumer2 = 0;
- Message message1;
- Message message2;
+ Message<byte[]> message1;
+ Message<byte[]> message2;
do {
message1 = consumer1.receive(500, TimeUnit.MILLISECONDS);
message2 = consumer2.receive(500, TimeUnit.MILLISECONDS);
@@ -359,16 +354,15 @@ public class ResendRequestTest extends BrokerTestBase {
final int totalMessages = 10;
// 1. producer connect
- Producer producer = pulsarClient.createProducer(topicName);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName).create();
PersistentTopic topicRef = (PersistentTopic) pulsar.getBrokerService().getTopicReference(topicName);
assertNotNull(topicRef);
assertEquals(topicRef.getProducers().size(), 1);
// 2. Create consumer
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setReceiverQueueSize(7);
- Consumer consumer = pulsarClient.subscribe(topicName, subscriptionName, conf);
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topicName).subscriptionName(subscriptionName)
+ .receiverQueueSize(7).subscribe();
// 3. producer publish messages
for (int i = 0; i < totalMessages; i++) {
@@ -377,7 +371,7 @@ public class ResendRequestTest extends BrokerTestBase {
}
// 4. Receive messages
- Message message = consumer.receive();
+ Message<byte[]> message = consumer.receive();
log.info("Message received " + new String(message.getData()));
for (int i = 0; i < 7; i++) {
printIncomingMessageQueue(consumer);
@@ -418,14 +412,12 @@ public class ResendRequestTest extends BrokerTestBase {
// Special step to create partitioned topic
// 1. producer connect
- ProducerConfiguration prodConfig = new ProducerConfiguration();
- prodConfig.setMessageRoutingMode(MessageRoutingMode.RoundRobinPartition);
- Producer producer = pulsarClient.createProducer(topicName, prodConfig);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName)
+ .messageRoutingMode(MessageRoutingMode.RoundRobinPartition).create();
// 2. Create consumer
- ConsumerConfiguration consumerConfig = new ConsumerConfiguration();
- consumerConfig.setReceiverQueueSize(7);
- Consumer consumer = pulsarClient.subscribe(topicName, subscriptionName, consumerConfig);
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topicName).subscriptionName(subscriptionName)
+ .receiverQueueSize(7).subscribe();
// 3. producer publish messages
for (int i = 0; i < totalMessages; i++) {
@@ -435,7 +427,7 @@ public class ResendRequestTest extends BrokerTestBase {
}
// 4. Receive messages
- Message message = consumer.receive();
+ Message<byte[]> message = consumer.receive();
int messageCount = 0;
log.info("Message received " + new String(message.getData()));
do {
@@ -474,16 +466,14 @@ public class ResendRequestTest extends BrokerTestBase {
// Special step to create partitioned topic
// 1. producer connect
- ProducerConfiguration prodConfig = new ProducerConfiguration();
- prodConfig.setMessageRoutingMode(MessageRoutingMode.RoundRobinPartition);
- Producer producer = pulsarClient.createProducer(topicName, prodConfig);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName)
+ .messageRoutingMode(MessageRoutingMode.RoundRobinPartition).create();
// 2. Create consumer
- ConsumerConfiguration consumerConfig = new ConsumerConfiguration();
- consumerConfig.setReceiverQueueSize(7);
- consumerConfig.setSubscriptionType(SubscriptionType.Shared);
- Consumer consumer1 = pulsarClient.subscribe(topicName, subscriptionName, consumerConfig);
- Consumer consumer2 = pulsarClient.subscribe(topicName, subscriptionName, consumerConfig);
+ ConsumerBuilder<byte[]> consumerBuilder = pulsarClient.newConsumer().topic(topicName)
+ .subscriptionName(subscriptionName).receiverQueueSize(7).subscriptionType(SubscriptionType.Shared);
+ Consumer<byte[]> consumer1 = consumerBuilder.subscribe();
+ Consumer<byte[]> consumer2 = consumerBuilder.subscribe();
// 3. producer publish messages
for (int i = 0; i < totalMessages; i++) {
@@ -493,8 +483,8 @@ public class ResendRequestTest extends BrokerTestBase {
}
// 4. Receive messages
- Message message1 = consumer1.receive();
- Message message2 = consumer2.receive();
+ Message<byte[]> message1 = consumer1.receive();
+ Message<byte[]> message2 = consumer2.receive();
int messageCount1 = 0;
int messageCount2 = 0;
int ackCount1 = 0;
@@ -572,18 +562,15 @@ public class ResendRequestTest extends BrokerTestBase {
// Special step to create partitioned topic
// 1. producer connect
- ProducerConfiguration prodConfig = new ProducerConfiguration();
- prodConfig.setMessageRoutingMode(MessageRoutingMode.RoundRobinPartition);
- Producer producer = pulsarClient.createProducer(topicName, prodConfig);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName)
+ .messageRoutingMode(MessageRoutingMode.RoundRobinPartition).create();
// 2. Create consumer
- ConsumerConfiguration consumerConfig = new ConsumerConfiguration();
- consumerConfig.setReceiverQueueSize(7);
- consumerConfig.setSubscriptionType(SubscriptionType.Failover);
- consumerConfig.setConsumerName("Consumer-1");
- Consumer consumer1 = pulsarClient.subscribe(topicName, subscriptionName, consumerConfig);
- consumerConfig.setConsumerName("Consumer-2");
- Consumer consumer2 = pulsarClient.subscribe(topicName, subscriptionName, consumerConfig);
+ ConsumerBuilder<byte[]> consumerBuilder = pulsarClient.newConsumer().topic(topicName)
+ .subscriptionName(subscriptionName).receiverQueueSize(7).subscriptionType(SubscriptionType.Failover);
+ Consumer<byte[]> consumer1 = consumerBuilder.clone().consumerName("Consumer-1").subscribe();
+ Consumer<byte[]> consumer2 = consumerBuilder.clone().consumerName("Consumer-2").subscribe();
+
Thread.sleep(1000);
// 3. producer publish messages
for (int i = 0; i < totalMessages; i++) {
@@ -593,8 +580,8 @@ public class ResendRequestTest extends BrokerTestBase {
}
// 4. Receive messages
- Message message1 = consumer1.receive();
- Message message2 = consumer2.receive();
+ Message<byte[]> message1 = consumer1.receive();
+ Message<byte[]> message2 = consumer2.receive();
int messageCount1 = 0;
int messageCount2 = 0;
int ackCount1 = 0;
@@ -657,19 +644,16 @@ public class ResendRequestTest extends BrokerTestBase {
final String messagePredicate = "my-message-" + key + "-";
final int totalMessages = 10;
// 1. producer connect
- Producer producer = pulsarClient.createProducer(topicName);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName).create();
PersistentTopic topicRef = (PersistentTopic) pulsar.getBrokerService().getTopicReference(topicName);
assertNotNull(topicRef);
assertEquals(topicRef.getProducers().size(), 1);
// 2. Create consumer
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setReceiverQueueSize(10);
- conf.setSubscriptionType(SubscriptionType.Failover);
- conf.setConsumerName("consumer-1");
- Consumer consumer1 = pulsarClient.subscribe(topicName, subscriptionName, conf);
- conf.setConsumerName("consumer-2");
- Consumer consumer2 = pulsarClient.subscribe(topicName, subscriptionName, conf);
+ ConsumerBuilder<byte[]> consumerBuilder = pulsarClient.newConsumer().topic(topicName)
+ .subscriptionName(subscriptionName).receiverQueueSize(10).subscriptionType(SubscriptionType.Failover);
+ Consumer<byte[]> consumer1 = consumerBuilder.clone().consumerName("Consumer-1").subscribe();
+ Consumer<byte[]> consumer2 = consumerBuilder.clone().consumerName("Consumer-2").subscribe();
// 3. Producer publishes messages
for (int i = 0; i < totalMessages; i++) {
@@ -680,8 +664,8 @@ public class ResendRequestTest extends BrokerTestBase {
// 4. Receive messages
int receivedConsumer1 = 0, receivedConsumer2 = 0;
- Message message1;
- Message message2;
+ Message<byte[]> message1;
+ Message<byte[]> message2;
do {
message1 = consumer1.receive(500, TimeUnit.MILLISECONDS);
if (message1 != null) {
@@ -707,12 +691,13 @@ public class ResendRequestTest extends BrokerTestBase {
assertEquals(message2, null);
}
- private BlockingQueue<Message> printIncomingMessageQueue(Consumer consumer) throws Exception {
- BlockingQueue<Message> imq = null;
- ConsumerBase c = (ConsumerBase) consumer;
+ @SuppressWarnings("unchecked")
+ private BlockingQueue<Message<byte[]>> printIncomingMessageQueue(Consumer<byte[]> consumer) throws Exception {
+ BlockingQueue<Message<byte[]>> imq = null;
+ ConsumerBase<byte[]> c = (ConsumerBase<byte[]>) consumer;
Field field = ConsumerBase.class.getDeclaredField("incomingMessages");
field.setAccessible(true);
- imq = (BlockingQueue<Message>) field.get(c);
+ imq = (BlockingQueue<Message<byte[]>>) field.get(c);
log.info("Incoming MEssage Queue: {}", imq);
return imq;
}
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/ServerCnxTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/ServerCnxTest.java
index 6158495..ded2f00 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/ServerCnxTest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/ServerCnxTest.java
@@ -39,7 +39,6 @@ import java.io.IOException;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Collections;
-import java.util.Map;
import java.util.Optional;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.CountDownLatch;
@@ -91,8 +90,8 @@ import org.apache.pulsar.common.api.proto.PulsarApi.EncryptionKeys;
import org.apache.pulsar.common.api.proto.PulsarApi.MessageMetadata;
import org.apache.pulsar.common.api.proto.PulsarApi.ProtocolVersion;
import org.apache.pulsar.common.api.proto.PulsarApi.ServerError;
-import org.apache.pulsar.common.naming.TopicName;
import org.apache.pulsar.common.naming.NamespaceBundle;
+import org.apache.pulsar.common.naming.TopicName;
import org.apache.pulsar.common.policies.data.AuthAction;
import org.apache.pulsar.common.policies.data.Policies;
import org.apache.pulsar.zookeeper.ZooKeeperDataCache;
@@ -100,8 +99,6 @@ import org.apache.zookeeper.ZooKeeper;
import org.mockito.Mockito;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
@@ -117,6 +114,7 @@ import io.netty.handler.codec.LengthFieldBasedFrameDecoder;
/**
*/
@Test
+@SuppressWarnings("unchecked")
public class ServerCnxTest {
protected EmbeddedChannel channel;
private ServiceConfiguration svcConfig;
@@ -159,7 +157,6 @@ public class ServerCnxTest {
doReturn(createMockBookKeeper(mockZk)).when(pulsar).getBookKeeperClient();
configCacheService = mock(ConfigurationCacheService.class);
- @SuppressWarnings("unchecked")
ZooKeeperDataCache<Policies> zkDataCache = mock(ZooKeeperDataCache.class);
doReturn(Optional.empty()).when(zkDataCache).get(anyObject());
doReturn(zkDataCache).when(configCacheService).policiesCache();
@@ -473,7 +470,6 @@ public class ServerCnxTest {
assertEquals(topicRef.getProducers().size(), 0);
}
- @SuppressWarnings("unchecked")
@Test(timeOut = 30000)
public void testNonExistentTopic() throws Exception {
ZooKeeperDataCache<Policies> zkDataCache = mock(ZooKeeperDataCache.class);
@@ -1560,6 +1556,4 @@ public class ServerCnxTest {
channel.finish();
}
-
- private static final Logger log = LoggerFactory.getLogger(ServerCnxTest.class);
}
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/SubscriptionSeekTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/SubscriptionSeekTest.java
index cd38384..284e6c6 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/SubscriptionSeekTest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/SubscriptionSeekTest.java
@@ -27,7 +27,6 @@ import java.util.List;
import org.apache.pulsar.broker.service.persistent.PersistentSubscription;
import org.apache.pulsar.broker.service.persistent.PersistentTopic;
-import org.apache.pulsar.client.api.ConsumerConfiguration;
import org.apache.pulsar.client.api.MessageId;
import org.apache.pulsar.client.api.Producer;
import org.apache.pulsar.client.api.PulsarClientException;
@@ -55,14 +54,11 @@ public class SubscriptionSeekTest extends BrokerTestBase {
public void testSeek() throws Exception {
final String topicName = "persistent://prop/use/ns-abc/testSeek";
- Producer producer = pulsarClient.createProducer(topicName);
-
- ConsumerConfiguration consumerConf = new ConsumerConfiguration();
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName).create();
// Disable pre-fetch in consumer to track the messages received
- consumerConf.setReceiverQueueSize(0);
- org.apache.pulsar.client.api.Consumer consumer = pulsarClient.subscribe(topicName, "my-subscription",
- consumerConf);
+ org.apache.pulsar.client.api.Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topicName)
+ .subscriptionName("my-subscription").receiverQueueSize(0).subscribe();
PersistentTopic topicRef = (PersistentTopic) pulsar.getBrokerService().getTopicReference(topicName);
assertNotNull(topicRef);
@@ -97,7 +93,8 @@ public class SubscriptionSeekTest extends BrokerTestBase {
final String topicName = "persistent://prop/use/ns-abc/testSeekPartitions";
admin.persistentTopics().createPartitionedTopic(topicName, 2);
- org.apache.pulsar.client.api.Consumer consumer = pulsarClient.subscribe(topicName, "my-subscription");
+ org.apache.pulsar.client.api.Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topicName)
+ .subscriptionName("my-subscription").subscribe();
try {
consumer.seek(MessageId.latest);
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/TopicTerminationTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/TopicTerminationTest.java
index bcc5470..696a331 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/TopicTerminationTest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/TopicTerminationTest.java
@@ -35,14 +35,12 @@ import java.util.concurrent.TimeUnit;
import org.apache.pulsar.client.admin.PulsarAdminException.NotAllowedException;
import org.apache.pulsar.client.api.Consumer;
-import org.apache.pulsar.client.api.ConsumerConfiguration;
import org.apache.pulsar.client.api.Message;
import org.apache.pulsar.client.api.MessageId;
import org.apache.pulsar.client.api.MessageListener;
import org.apache.pulsar.client.api.Producer;
import org.apache.pulsar.client.api.PulsarClientException;
import org.apache.pulsar.client.api.Reader;
-import org.apache.pulsar.client.api.ReaderConfiguration;
import org.apache.pulsar.client.api.ReaderListener;
import org.apache.pulsar.common.util.FutureUtil;
import org.testng.annotations.AfterMethod;
@@ -67,7 +65,7 @@ public class TopicTerminationTest extends BrokerTestBase {
@Test
public void testSimpleTermination() throws Exception {
- Producer producer = pulsarClient.createProducer(topicName);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName).create();
/* MessageId msgId1 = */producer.send("test-msg-1".getBytes());
/* MessageId msgId2 = */producer.send("test-msg-2".getBytes());
@@ -86,7 +84,7 @@ public class TopicTerminationTest extends BrokerTestBase {
@Test
public void testCreateProducerOnTerminatedTopic() throws Exception {
- Producer producer = pulsarClient.createProducer(topicName);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName).create();
/* MessageId msgId1 = */producer.send("test-msg-1".getBytes());
/* MessageId msgId2 = */producer.send("test-msg-2".getBytes());
@@ -96,7 +94,7 @@ public class TopicTerminationTest extends BrokerTestBase {
assertEquals(lastMessageId, msgId3);
try {
- pulsarClient.createProducer(topicName);
+ pulsarClient.newProducer().topic(topicName).create();
fail("Should have thrown exception");
} catch (PulsarClientException.TopicTerminatedException e) {
// Expected
@@ -105,7 +103,7 @@ public class TopicTerminationTest extends BrokerTestBase {
@Test(timeOut = 20000)
public void testTerminateWhilePublishing() throws Exception {
- Producer producer = pulsarClient.createProducer(topicName);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName).create();
CyclicBarrier barrier = new CyclicBarrier(2);
List<CompletableFuture<MessageId>> futures = new ArrayList<>();
@@ -150,7 +148,7 @@ public class TopicTerminationTest extends BrokerTestBase {
@Test
public void testDoubleTerminate() throws Exception {
- Producer producer = pulsarClient.createProducer(topicName);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName).create();
/* MessageId msgId1 = */producer.send("test-msg-1".getBytes());
/* MessageId msgId2 = */producer.send("test-msg-2".getBytes());
@@ -178,13 +176,14 @@ public class TopicTerminationTest extends BrokerTestBase {
@Test(timeOut = 20000)
public void testSimpleTerminationConsumer() throws Exception {
- Producer producer = pulsarClient.createProducer(topicName);
- org.apache.pulsar.client.api.Consumer consumer = pulsarClient.subscribe(topicName, "my-sub");
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName).create();
+ org.apache.pulsar.client.api.Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topicName)
+ .subscriptionName("my-sub").subscribe();
MessageId msgId1 = producer.send("test-msg-1".getBytes());
MessageId msgId2 = producer.send("test-msg-2".getBytes());
- Message msg1 = consumer.receive();
+ Message<byte[]> msg1 = consumer.receive();
assertEquals(msg1.getMessageId(), msgId1);
consumer.acknowledge(msg1);
@@ -195,43 +194,41 @@ public class TopicTerminationTest extends BrokerTestBase {
MessageId lastMessageId = admin.persistentTopics().terminateTopicAsync(topicName).get();
assertEquals(lastMessageId, msgId3);
- Message msg2 = consumer.receive();
+ Message<byte[]> msg2 = consumer.receive();
assertEquals(msg2.getMessageId(), msgId2);
consumer.acknowledge(msg2);
- Message msg3 = consumer.receive();
+ Message<byte[]> msg3 = consumer.receive();
assertEquals(msg3.getMessageId(), msgId3);
consumer.acknowledge(msg3);
- Message msg4 = consumer.receive(100, TimeUnit.MILLISECONDS);
+ Message<byte[]> msg4 = consumer.receive(100, TimeUnit.MILLISECONDS);
assertNull(msg4);
Thread.sleep(100);
assertTrue(consumer.hasReachedEndOfTopic());
}
- @SuppressWarnings("serial")
@Test(timeOut = 20000)
public void testSimpleTerminationMessageListener() throws Exception {
- Producer producer = pulsarClient.createProducer(topicName);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName).create();
CountDownLatch latch = new CountDownLatch(1);
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setMessageListener(new MessageListener() {
+ org.apache.pulsar.client.api.Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topicName)
+ .subscriptionName("my-sub").messageListener(new MessageListener<byte[]>() {
- @Override
- public void received(Consumer consumer, Message msg) {
- // do nothing
- }
+ @Override
+ public void received(Consumer<byte[]> consumer, Message<byte[]> msg) {
+ // do nothing
+ }
- @Override
- public void reachedEndOfTopic(Consumer consumer) {
- latch.countDown();
- assertTrue(consumer.hasReachedEndOfTopic());
- }
- });
- org.apache.pulsar.client.api.Consumer consumer = pulsarClient.subscribe(topicName, "my-sub", conf);
+ @Override
+ public void reachedEndOfTopic(Consumer<byte[]> consumer) {
+ latch.countDown();
+ assertTrue(consumer.hasReachedEndOfTopic());
+ }
+ }).subscribe();
/* MessageId msgId1 = */ producer.send("test-msg-1".getBytes());
/* MessageId msgId2 = */ producer.send("test-msg-2".getBytes());
@@ -251,7 +248,7 @@ public class TopicTerminationTest extends BrokerTestBase {
@Test(timeOut = 20000)
public void testSimpleTerminationReader() throws Exception {
- Producer producer = pulsarClient.createProducer(topicName);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName).create();
MessageId msgId1 = producer.send("test-msg-1".getBytes());
MessageId msgId2 = producer.send("test-msg-2".getBytes());
@@ -260,46 +257,43 @@ public class TopicTerminationTest extends BrokerTestBase {
MessageId lastMessageId = admin.persistentTopics().terminateTopicAsync(topicName).get();
assertEquals(lastMessageId, msgId3);
- Reader reader = pulsarClient.createReader(topicName, MessageId.earliest, new ReaderConfiguration());
+ Reader<byte[]> reader = pulsarClient.newReader().topic(topicName).startMessageId(MessageId.earliest).create();
- Message msg1 = reader.readNext();
+ Message<byte[]> msg1 = reader.readNext();
assertEquals(msg1.getMessageId(), msgId1);
- Message msg2 = reader.readNext();
+ Message<byte[]> msg2 = reader.readNext();
assertEquals(msg2.getMessageId(), msgId2);
- Message msg3 = reader.readNext();
+ Message<byte[]> msg3 = reader.readNext();
assertEquals(msg3.getMessageId(), msgId3);
- Message msg4 = reader.readNext(100, TimeUnit.MILLISECONDS);
+ Message<byte[]> msg4 = reader.readNext(100, TimeUnit.MILLISECONDS);
assertNull(msg4);
Thread.sleep(100);
assertTrue(reader.hasReachedEndOfTopic());
}
- @SuppressWarnings("serial")
@Test(timeOut = 20000)
public void testSimpleTerminationReaderListener() throws Exception {
- Producer producer = pulsarClient.createProducer(topicName);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName).create();
CountDownLatch latch = new CountDownLatch(1);
- ReaderConfiguration conf = new ReaderConfiguration();
- conf.setReaderListener(new ReaderListener() {
+ Reader<byte[]> reader = pulsarClient.newReader().topic(topicName).startMessageId(MessageId.latest)
+ .readerListener(new ReaderListener<byte[]>() {
+ @Override
+ public void received(Reader<byte[]> reader, Message<byte[]> msg) {
+ // do nothing
+ }
- @Override
- public void received(Reader r, Message msg) {
- // do nothing
- }
-
- @Override
- public void reachedEndOfTopic(Reader reader) {
- latch.countDown();
- assertTrue(reader.hasReachedEndOfTopic());
- }
- });
- Reader reader = pulsarClient.createReader(topicName, MessageId.latest, conf);
+ @Override
+ public void reachedEndOfTopic(Reader<byte[]> reader) {
+ latch.countDown();
+ assertTrue(reader.hasReachedEndOfTopic());
+ }
+ }).create();
/* MessageId msgId1 = */ producer.send("test-msg-1".getBytes());
/* MessageId msgId2 = */ producer.send("test-msg-2".getBytes());
@@ -317,14 +311,15 @@ public class TopicTerminationTest extends BrokerTestBase {
@Test(timeOut = 20000)
public void testSubscribeOnTerminatedTopic() throws Exception {
- Producer producer = pulsarClient.createProducer(topicName);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName).create();
/* MessageId msgId1 = */ producer.send("test-msg-1".getBytes());
MessageId msgId2 = producer.send("test-msg-2".getBytes());
MessageId lastMessageId = admin.persistentTopics().terminateTopicAsync(topicName).get();
assertEquals(lastMessageId, msgId2);
- org.apache.pulsar.client.api.Consumer consumer = pulsarClient.subscribe(topicName, "my-sub");
+ org.apache.pulsar.client.api.Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topicName)
+ .subscriptionName("my-sub").subscribe();
Thread.sleep(200);
assertTrue(consumer.hasReachedEndOfTopic());
@@ -332,10 +327,11 @@ public class TopicTerminationTest extends BrokerTestBase {
@Test(timeOut = 20000)
public void testSubscribeOnTerminatedTopicWithNoMessages() throws Exception {
- pulsarClient.createProducer(topicName);
+ pulsarClient.newProducer().topic(topicName).create();
admin.persistentTopics().terminateTopicAsync(topicName).get();
- org.apache.pulsar.client.api.Consumer consumer = pulsarClient.subscribe(topicName, "my-sub");
+ org.apache.pulsar.client.api.Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topicName)
+ .subscriptionName("my-sub").subscribe();
Thread.sleep(200);
assertTrue(consumer.hasReachedEndOfTopic());
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/persistent/ChecksumTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/persistent/ChecksumTest.java
index 6d7a858..3e6b3bd 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/persistent/ChecksumTest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/persistent/ChecksumTest.java
@@ -59,7 +59,7 @@ public class ChecksumTest extends BrokerTestBase {
public void verifyChecksumStoredInManagedLedger() throws Exception {
final String topicName = "persistent://prop/use/ns-abc/topic0";
- Producer producer = pulsarClient.createProducer(topicName);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName).create();
PersistentTopic topic = (PersistentTopic) pulsar.getBrokerService().getTopicReference(topicName);
@@ -86,7 +86,7 @@ public class ChecksumTest extends BrokerTestBase {
public void verifyChecksumSentToConsumer() throws Exception {
final String topicName = "persistent://prop/use/ns-abc/topic-1";
- Producer producer = pulsarClient.createProducer(topicName);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName).create();
RawReader reader = RawReader.create(pulsarClient, topicName, "sub").get();
producer.send("Hello".getBytes());
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/stats/ManagedLedgerMetricsTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/stats/ManagedLedgerMetricsTest.java
index 45d541f..f74f192 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/stats/ManagedLedgerMetricsTest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/stats/ManagedLedgerMetricsTest.java
@@ -58,7 +58,8 @@ public class ManagedLedgerMetricsTest extends BrokerTestBase {
List<Metrics> list1 = metrics.generate();
Assert.assertTrue(list1.isEmpty());
- Producer producer = pulsarClient.createProducer("persistent://my-property/use/my-ns/my-topic1");
+ Producer<byte[]> producer = pulsarClient.newProducer().topic("persistent://my-property/use/my-ns/my-topic1")
+ .create();
for (int i = 0; i < 10; i++) {
String message = "my-message-" + i;
producer.send(message.getBytes());
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/stats/PrometheusMetricsTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/stats/PrometheusMetricsTest.java
index 8aa6fdc..62d490e 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/stats/PrometheusMetricsTest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/stats/PrometheusMetricsTest.java
@@ -55,8 +55,8 @@ public class PrometheusMetricsTest extends BrokerTestBase {
@Test
public void testPerTopicStats() throws Exception {
- Producer p1 = pulsarClient.createProducer("persistent://my-property/use/my-ns/my-topic1");
- Producer p2 = pulsarClient.createProducer("persistent://my-property/use/my-ns/my-topic2");
+ Producer<byte[]> p1 = pulsarClient.newProducer().topic("persistent://my-property/use/my-ns/my-topic1").create();
+ Producer<byte[]> p2 = pulsarClient.newProducer().topic("persistent://my-property/use/my-ns/my-topic2").create();
for (int i = 0; i < 10; i++) {
String message = "my-message-" + i;
p1.send(message.getBytes());
@@ -101,8 +101,8 @@ public class PrometheusMetricsTest extends BrokerTestBase {
@Test
public void testPerNamespaceStats() throws Exception {
- Producer p1 = pulsarClient.createProducer("persistent://my-property/use/my-ns/my-topic1");
- Producer p2 = pulsarClient.createProducer("persistent://my-property/use/my-ns/my-topic2");
+ Producer<byte[]> p1 = pulsarClient.newProducer().topic("persistent://my-property/use/my-ns/my-topic1").create();
+ Producer<byte[]> p2 = pulsarClient.newProducer().topic("persistent://my-property/use/my-ns/my-topic2").create();
for (int i = 0; i < 10; i++) {
String message = "my-message-" + i;
p1.send(message.getBytes());
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/zookeeper/ZooKeeperClientAspectJTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/zookeeper/ZooKeeperClientAspectJTest.java
index 5454c8b..99ac805 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/zookeeper/ZooKeeperClientAspectJTest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/zookeeper/ZooKeeperClientAspectJTest.java
@@ -189,7 +189,7 @@ public class ZooKeeperClientAspectJTest {
PulsarClient pulsarClient = mockPulsar.getClient();
PulsarService pulsar = mockPulsar.getPulsar();
- pulsarClient.createProducer("persistent://my-property/use/my-ns/my-topic1");
+ pulsarClient.newProducer().topic("persistent://my-property/use/my-ns/my-topic1").create();
Metrics zkOpMetric = getMetric(pulsar, "zk_write_latency");
Assert.assertNotNull(zkOpMetric);
Assert.assertTrue(zkOpMetric.getMetrics().containsKey("brk_zk_write_rate_s"));
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/AuthenticatedProducerConsumerTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/AuthenticatedProducerConsumerTest.java
index 7c6f6a9..eafe9c8 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/AuthenticatedProducerConsumerTest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/AuthenticatedProducerConsumerTest.java
@@ -109,7 +109,9 @@ public class AuthenticatedProducerConsumerTest extends ProducerConsumerBase {
} else {
lookupUrl = new URI("pulsar+ssl://localhost:" + BROKER_PORT_TLS).toString();
}
- pulsarClient = PulsarClient.create(lookupUrl, clientConf);
+ pulsarClient = PulsarClient.builder().serviceUrl(lookupUrl).statsInterval(0, TimeUnit.SECONDS)
+ .tlsTrustCertsFilePath(TLS_TRUST_CERT_FILE_PATH).allowTlsInsecureConnection(true).authentication(auth)
+ .enableTls(true).build();
}
@AfterMethod
@@ -124,26 +126,24 @@ public class AuthenticatedProducerConsumerTest extends ProducerConsumerBase {
}
public void testSyncProducerAndConsumer(int batchMessageDelayMs) throws Exception {
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setSubscriptionType(SubscriptionType.Exclusive);
- Consumer consumer = pulsarClient.subscribe("persistent://my-property/use/my-ns/my-topic", "my-subscriber-name",
- conf);
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic("persistent://my-property/use/my-ns/my-topic")
+ .subscriptionName("my-subscriber-name").subscribe();
- ProducerConfiguration producerConf = new ProducerConfiguration();
+ ProducerBuilder<byte[]> producerBuilder = pulsarClient.newProducer().topic("persistent://my-property/use/my-ns/my-topic");
if (batchMessageDelayMs != 0) {
- producerConf.setBatchingEnabled(true);
- producerConf.setBatchingMaxPublishDelay(batchMessageDelayMs, TimeUnit.MILLISECONDS);
- producerConf.setBatchingMaxMessages(5);
+ producerBuilder.enableBatching(true);
+ producerBuilder.batchingMaxPublishDelay(batchMessageDelayMs, TimeUnit.MILLISECONDS);
+ producerBuilder.batchingMaxMessages(5);
}
- Producer producer = pulsarClient.createProducer("persistent://my-property/use/my-ns/my-topic", producerConf);
+ Producer<byte[]> producer = producerBuilder.create();
for (int i = 0; i < 10; i++) {
String message = "my-message-" + i;
producer.send(message.getBytes());
}
- Message msg = null;
+ Message<byte[]> msg = null;
Set<String> messageSet = Sets.newHashSet();
for (int i = 0; i < 10; i++) {
msg = consumer.receive(5, TimeUnit.SECONDS);
@@ -184,8 +184,8 @@ public class AuthenticatedProducerConsumerTest extends ProducerConsumerBase {
authPassword.configure("{\"userId\":\"superUser\",\"password\":\"supepass\"}");
internalSetup(authPassword);
- admin.properties()
- .createProperty("my-property", new PropertyAdmin(Lists.newArrayList(), Sets.newHashSet("use")));
+ admin.properties().createProperty("my-property",
+ new PropertyAdmin(Lists.newArrayList(), Sets.newHashSet("use")));
admin.namespaces().createNamespace("my-property/use/my-ns");
testSyncProducerAndConsumer(batchMessageDelayMs);
@@ -200,8 +200,8 @@ public class AuthenticatedProducerConsumerTest extends ProducerConsumerBase {
authPassword.configure("{\"userId\":\"superUser2\",\"password\":\"superpassword\"}");
internalSetup(authPassword);
- admin.properties()
- .createProperty("my-property", new PropertyAdmin(Lists.newArrayList(), Sets.newHashSet("use")));
+ admin.properties().createProperty("my-property",
+ new PropertyAdmin(Lists.newArrayList(), Sets.newHashSet("use")));
admin.namespaces().createNamespace("my-property/use/my-ns");
testSyncProducerAndConsumer(batchMessageDelayMs);
@@ -209,7 +209,6 @@ public class AuthenticatedProducerConsumerTest extends ProducerConsumerBase {
log.info("-- Exiting {} test --", methodName);
}
-
@Test(dataProvider = "batch")
public void testAnonymousSyncProducerAndConsumer(int batchMessageDelayMs) throws Exception {
log.info("-- Starting {} test --", methodName);
@@ -232,17 +231,19 @@ public class AuthenticatedProducerConsumerTest extends ProducerConsumerBase {
clientConf.setOperationTimeout(1, TimeUnit.SECONDS);
admin = spy(new PulsarAdmin(brokerUrl, clientConf));
admin.namespaces().createNamespace("my-property/use/my-ns");
- admin.persistentTopics().grantPermission("persistent://my-property/use/my-ns/my-topic", "anonymousUser", EnumSet
- .allOf(AuthAction.class));
+ admin.persistentTopics().grantPermission("persistent://my-property/use/my-ns/my-topic", "anonymousUser",
+ EnumSet.allOf(AuthAction.class));
// setup the client
pulsarClient.close();
- pulsarClient = PulsarClient.create("pulsar://localhost:" + BROKER_PORT, clientConf);
+ pulsarClient = PulsarClient.builder().serviceUrl("pulsar://localhost:" + BROKER_PORT)
+ .operationTimeout(1, TimeUnit.SECONDS).build();
// unauthorized topic test
Exception pulsarClientException = null;
try {
- pulsarClient.subscribe("persistent://my-property/use/my-ns/other-topic", "my-subscriber-name");
+ pulsarClient.newConsumer().topic("persistent://my-property/use/my-ns/other-topic")
+ .subscriptionName("my-subscriber-name").subscribe();
} catch (Exception e) {
pulsarClientException = e;
}
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/AuthenticationTlsHostnameVerificationTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/AuthenticationTlsHostnameVerificationTest.java
index 5ccfc14..4338ae3 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/AuthenticationTlsHostnameVerificationTest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/AuthenticationTlsHostnameVerificationTest.java
@@ -118,7 +118,10 @@ public class AuthenticationTlsHostnameVerificationTest extends ProducerConsumerB
admin = spy(new PulsarAdmin(brokerUrlTls, clientConf));
String lookupUrl;
lookupUrl = new URI("pulsar+ssl://" + brokerHostName + ":" + BROKER_PORT_TLS).toString();
- pulsarClient = PulsarClient.create(lookupUrl, clientConf);
+ pulsarClient = PulsarClient.builder().serviceUrl(lookupUrl).statsInterval(0, TimeUnit.SECONDS)
+ .tlsTrustCertsFilePath(TLS_MIM_TRUST_CERT_FILE_PATH).allowTlsInsecureConnection(true)
+ .authentication(authTls).enableTls(true).enableTlsHostnameVerification(hostnameVerificationEnabled)
+ .build();
admin.properties().createProperty("my-property",
new PropertyAdmin(Lists.newArrayList("appid1", "appid2"), Sets.newHashSet("use")));
@@ -140,13 +143,13 @@ public class AuthenticationTlsHostnameVerificationTest extends ProducerConsumerB
/**
* It verifies that client performs host-verification in order to create producer/consumer.
- *
+ *
* <pre>
* 1. Client tries to connect to broker with hostname="localhost"
* 2. Broker sends x509 certificates with CN = "pulsar"
* 3. Client verifies the host-name and closes the connection and fails consumer creation
* </pre>
- *
+ *
* @throws Exception
*/
@Test(dataProvider = "hostnameVerification")
@@ -164,11 +167,9 @@ public class AuthenticationTlsHostnameVerificationTest extends ProducerConsumerB
setup();
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setSubscriptionType(SubscriptionType.Exclusive);
try {
- Consumer consumer = pulsarClient.subscribe("persistent://my-property/use/my-ns/my-topic",
- "my-subscriber-name", conf);
+ pulsarClient.newConsumer().topic("persistent://my-property/use/my-ns/my-topic")
+ .subscriptionName("my-subscriber-name").subscribe();
if (hostnameVerificationEnabled) {
Assert.fail("Connection should be failed due to hostnameVerification enabled");
}
@@ -183,13 +184,13 @@ public class AuthenticationTlsHostnameVerificationTest extends ProducerConsumerB
/**
* It verifies that client performs host-verification in order to create producer/consumer.
- *
+ *
* <pre>
* 1. Client tries to connect to broker with hostname="localhost"
* 2. Broker sends x509 certificates with CN = "localhost"
* 3. Client verifies the host-name and continues
* </pre>
- *
+ *
* @throws Exception
*/
@Test
@@ -203,20 +204,17 @@ public class AuthenticationTlsHostnameVerificationTest extends ProducerConsumerB
setup();
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setSubscriptionType(SubscriptionType.Exclusive);
- Consumer consumer = pulsarClient.subscribe("persistent://my-property/use/my-ns/my-topic", "my-subscriber-name",
- conf);
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic("persistent://my-property/use/my-ns/my-topic")
+ .subscriptionName("my-subscriber-name").subscribe();
- ProducerConfiguration producerConf = new ProducerConfiguration();
-
- Producer producer = pulsarClient.createProducer("persistent://my-property/use/my-ns/my-topic", producerConf);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic("persistent://my-property/use/my-ns/my-topic")
+ .create();
for (int i = 0; i < 10; i++) {
String message = "my-message-" + i;
producer.send(message.getBytes());
}
- Message msg = null;
+ Message<byte[]> msg = null;
Set<String> messageSet = Sets.newHashSet();
for (int i = 0; i < 10; i++) {
msg = consumer.receive(5, TimeUnit.SECONDS);
@@ -234,7 +232,7 @@ public class AuthenticationTlsHostnameVerificationTest extends ProducerConsumerB
/**
* This test verifies {@link DefaultHostnameVerifier} behavior and gives fair idea about host matching result
- *
+ *
* @throws Exception
*/
@Test
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/AuthorizationProducerConsumerTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/AuthorizationProducerConsumerTest.java
index 1eb27db..ec2ddd1 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/AuthorizationProducerConsumerTest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/AuthorizationProducerConsumerTest.java
@@ -110,37 +110,36 @@ public class AuthorizationProducerConsumerTest extends ProducerConsumerBase {
String lookupUrl;
lookupUrl = new URI("pulsar://localhost:" + BROKER_PORT).toString();
- ClientConfiguration clientConfValid = new ClientConfiguration();
Authentication authentication = new ClientAuthentication(clientRole);
- clientConfValid.setAuthentication(authentication);
-
- ClientConfiguration clientConfInvalidRole = new ClientConfiguration();
Authentication authenticationInvalidRole = new ClientAuthentication("test-role");
- clientConfInvalidRole.setAuthentication(authenticationInvalidRole);
- pulsarClient = PulsarClient.create(lookupUrl, clientConfValid);
- PulsarClient pulsarClientInvalidRole = PulsarClient.create(lookupUrl, clientConfInvalidRole);
+ pulsarClient = PulsarClient.builder().serviceUrl(lookupUrl).authentication(authentication).build();
+ PulsarClient pulsarClientInvalidRole = PulsarClient.builder().serviceUrl(lookupUrl)
+ .authentication(authenticationInvalidRole).build();
admin.properties().createProperty("my-property",
new PropertyAdmin(Lists.newArrayList("appid1", "appid2"), Sets.newHashSet("use")));
admin.namespaces().createNamespace("my-property/use/my-ns");
// (1) Valid Producer and consumer creation
- Consumer consumer = pulsarClient.subscribe("persistent://my-property/use/my-ns/my-topic", "my-subscriber-name");
- Producer producer = pulsarClient.createProducer("persistent://my-property/use/my-ns/my-topic");
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic("persistent://my-property/use/my-ns/my-topic")
+ .subscriptionName("my-subscriber-name").subscribe();
+ Producer<byte[]> producer = pulsarClient.newProducer().topic("persistent://my-property/use/my-ns/my-topic")
+ .create();
consumer.close();
producer.close();
// (2) InValid user auth-role will be rejected by authorization service
try {
- consumer = pulsarClientInvalidRole.subscribe("persistent://my-property/use/my-ns/my-topic",
- "my-subscriber-name");
+ consumer = pulsarClientInvalidRole.newConsumer().topic("persistent://my-property/use/my-ns/my-topic")
+ .subscriptionName("my-subscriber-name").subscribe();
Assert.fail("should have failed with authorization error");
} catch (PulsarClientException.AuthorizationException pa) {
// Ok
}
try {
- producer = pulsarClientInvalidRole.createProducer("persistent://my-property/use/my-ns/my-topic");
+ producer = pulsarClientInvalidRole.newProducer().topic("persistent://my-property/use/my-ns/my-topic")
+ .create();
Assert.fail("should have failed with authorization error");
} catch (PulsarClientException.AuthorizationException pa) {
// Ok
@@ -164,23 +163,23 @@ public class AuthorizationProducerConsumerTest extends ProducerConsumerBase {
String lookupUrl;
lookupUrl = new URI("pulsar://localhost:" + BROKER_PORT).toString();
- ClientConfiguration clientConfValid = new ClientConfiguration();
Authentication authentication = new ClientAuthentication(clientRole);
- clientConfValid.setAuthentication(authentication);
- pulsarClient = PulsarClient.create(lookupUrl, clientConfValid);
+ pulsarClient = PulsarClient.builder().serviceUrl(lookupUrl).authentication(authentication).build();
admin.properties().createProperty("prop-prefix",
new PropertyAdmin(Lists.newArrayList("appid1", "appid2"), Sets.newHashSet("use")));
admin.namespaces().createNamespace("prop-prefix/use/ns");
// (1) Valid subscription name will be approved by authorization service
- Consumer consumer = pulsarClient.subscribe("persistent://prop-prefix/use/ns/t1", clientRole + "-sub1");
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic("persistent://prop-prefix/use/ns/t1")
+ .subscriptionName(clientRole + "-sub1").subscribe();
consumer.close();
// (2) InValid subscription name will be rejected by authorization service
try {
- consumer = pulsarClient.subscribe("persistent://prop-prefix/use/ns/t1", "sub1");
+ consumer = pulsarClient.newConsumer().topic("persistent://prop-prefix/use/ns/t1").subscriptionName("sub1")
+ .subscribe();
Assert.fail("should have failed with authorization error");
} catch (PulsarClientException.AuthorizationException pa) {
// Ok
@@ -201,8 +200,7 @@ public class AuthorizationProducerConsumerTest extends ProducerConsumerBase {
String role = "test-role";
Assert.assertFalse(authorizationService.canProduce(topicName, role, null));
Assert.assertFalse(authorizationService.canConsume(topicName, role, null, "sub1"));
- authorizationService
- .grantPermissionAsync(topicName, null, role, "auth-json").get();
+ authorizationService.grantPermissionAsync(topicName, null, role, "auth-json").get();
Assert.assertTrue(authorizationService.canProduce(topicName, role, null));
Assert.assertTrue(authorizationService.canConsume(topicName, role, null, "sub1"));
@@ -219,16 +217,13 @@ public class AuthorizationProducerConsumerTest extends ProducerConsumerBase {
AuthorizationService authorizationService = new AuthorizationService(conf, null);
TopicName topicName = TopicName.get("persistent://prop/cluster/ns/t1");
String role = "test-role";
- authorizationService
- .grantPermissionAsync(topicName, null, role, "auth-json")
- .get();
+ authorizationService.grantPermissionAsync(topicName, null, role, "auth-json").get();
Assert.assertEquals(TestAuthorizationProviderWithGrantPermission.authDataJson, "auth-json");
- Assert.assertTrue(
- authorizationService.canProduce(topicName, role, new AuthenticationDataCommand("prod-auth")));
+ Assert.assertTrue(authorizationService.canProduce(topicName, role, new AuthenticationDataCommand("prod-auth")));
Assert.assertEquals(TestAuthorizationProviderWithGrantPermission.authenticationData.getCommandData(),
"prod-auth");
- Assert.assertTrue(authorizationService.canConsume(topicName, role, new AuthenticationDataCommand("cons-auth"),
- "sub1"));
+ Assert.assertTrue(
+ authorizationService.canConsume(topicName, role, new AuthenticationDataCommand("cons-auth"), "sub1"));
Assert.assertEquals(TestAuthorizationProviderWithGrantPermission.authenticationData.getCommandData(),
"cons-auth");
@@ -348,8 +343,8 @@ public class AuthorizationProducerConsumerTest extends ProducerConsumerBase {
}
@Override
- public CompletableFuture<Void> grantPermissionAsync(TopicName topicname, Set<AuthAction> actions,
- String role, String authenticationData) {
+ public CompletableFuture<Void> grantPermissionAsync(TopicName topicname, Set<AuthAction> actions, String role,
+ String authenticationData) {
return CompletableFuture.completedFuture(null);
}
}
@@ -433,8 +428,8 @@ public class AuthorizationProducerConsumerTest extends ProducerConsumerBase {
}
@Override
- public CompletableFuture<Void> grantPermissionAsync(TopicName topicname, Set<AuthAction> actions,
- String role, String authData) {
+ public CompletableFuture<Void> grantPermissionAsync(TopicName topicname, Set<AuthAction> actions, String role,
+ String authData) {
this.authDataJson = authData;
grantRoles.add(role);
return CompletableFuture.completedFuture(null);
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/BrokerServiceLookupTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/BrokerServiceLookupTest.java
index c72aa9e..57d8b47 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/BrokerServiceLookupTest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/BrokerServiceLookupTest.java
@@ -70,11 +70,10 @@ import org.apache.pulsar.broker.loadbalance.impl.ModularLoadManagerImpl;
import org.apache.pulsar.broker.loadbalance.impl.ModularLoadManagerWrapper;
import org.apache.pulsar.broker.loadbalance.impl.SimpleResourceUnit;
import org.apache.pulsar.broker.namespace.NamespaceService;
-import org.apache.pulsar.client.api.ProducerConfiguration.MessageRoutingMode;
import org.apache.pulsar.client.impl.auth.AuthenticationTls;
-import org.apache.pulsar.common.naming.TopicName;
import org.apache.pulsar.common.naming.NamespaceBundle;
import org.apache.pulsar.common.naming.ServiceUnitId;
+import org.apache.pulsar.common.naming.TopicName;
import org.apache.pulsar.common.partition.PartitionedTopicMetadata;
import org.apache.pulsar.common.policies.data.ClusterData;
import org.apache.pulsar.common.policies.data.PropertyAdmin;
@@ -105,6 +104,7 @@ import com.google.common.util.concurrent.MoreExecutors;
import io.netty.handler.codec.http.HttpRequest;
import io.netty.handler.codec.http.HttpResponse;
import io.netty.handler.ssl.util.InsecureTrustManagerFactory;
+import lombok.Cleanup;
public class BrokerServiceLookupTest extends ProducerConsumerBase {
private static final Logger log = LoggerFactory.getLogger(BrokerServiceLookupTest.class);
@@ -114,10 +114,9 @@ public class BrokerServiceLookupTest extends ProducerConsumerBase {
protected void setup() throws Exception {
conf.setDefaultNumberOfNamespaceBundles(1);
super.init();
- org.apache.pulsar.client.api.ClientConfiguration clientConf = new org.apache.pulsar.client.api.ClientConfiguration();
- clientConf.setStatsInterval(0, TimeUnit.SECONDS);
URI brokerServiceUrl = new URI("pulsar://localhost:" + BROKER_PORT);
- pulsarClient = PulsarClient.create(brokerServiceUrl.toString(), clientConf);
+ pulsarClient = PulsarClient.builder().serviceUrl(brokerServiceUrl.toString()).statsInterval(0, TimeUnit.SECONDS)
+ .build();
super.producerBaseSetup();
}
@@ -127,14 +126,13 @@ public class BrokerServiceLookupTest extends ProducerConsumerBase {
super.internalCleanup();
}
-
/**
* UsecaseL Multiple Broker => Lookup Redirection test
*
- * 1. Broker1 is a leader
- * 2. Lookup request reaches to Broker2 which redirects to leader (Broker1) with authoritative = false
- * 3. Leader (Broker1) finds out least loaded broker as Broker2 and redirects request to Broker2 with authoritative = true
- * 4. Broker2 receives final request to own a bundle with authoritative = true and client connects to Broker2
+ * 1. Broker1 is a leader 2. Lookup request reaches to Broker2 which redirects to leader (Broker1) with
+ * authoritative = false 3. Leader (Broker1) finds out least loaded broker as Broker2 and redirects request to
+ * Broker2 with authoritative = true 4. Broker2 receives final request to own a bundle with authoritative = true and
+ * client connects to Broker2
*
* @throws Exception
*/
@@ -156,7 +154,6 @@ public class BrokerServiceLookupTest extends ProducerConsumerBase {
pulsar.getLoadManager().get().writeLoadReportOnZookeeper();
pulsar2.getLoadManager().get().writeLoadReportOnZookeeper();
-
LoadManager loadManager1 = spy(pulsar.getLoadManager().get());
LoadManager loadManager2 = spy(pulsar2.getLoadManager().get());
Field loadManagerField = NamespaceService.class.getDeclaredField("loadManager");
@@ -175,19 +172,20 @@ public class BrokerServiceLookupTest extends ProducerConsumerBase {
/**** started broker-2 ****/
URI brokerServiceUrl = new URI("pulsar://localhost:" + conf2.getBrokerServicePort());
- PulsarClient pulsarClient2 = PulsarClient.create(brokerServiceUrl.toString(), new ClientConfiguration());
+ PulsarClient pulsarClient2 = PulsarClient.builder().serviceUrl(brokerServiceUrl.toString()).build();
// load namespace-bundle by calling Broker2
- Consumer consumer = pulsarClient2.subscribe("persistent://my-property/use/my-ns/my-topic1", "my-subscriber-name",
- new ConsumerConfiguration());
- Producer producer = pulsarClient.createProducer("persistent://my-property/use/my-ns/my-topic1", new ProducerConfiguration());
+ Consumer<byte[]> consumer = pulsarClient2.newConsumer().topic("persistent://my-property/use/my-ns/my-topic1")
+ .subscriptionName("my-subscriber-name").subscribe();
+ Producer<byte[]> producer = pulsarClient.newProducer().topic("persistent://my-property/use/my-ns/my-topic1")
+ .create();
for (int i = 0; i < 10; i++) {
String message = "my-message-" + i;
producer.send(message.getBytes());
}
- Message msg = null;
+ Message<byte[]> msg = null;
Set<String> messageSet = Sets.newHashSet();
for (int i = 0; i < 10; i++) {
msg = consumer.receive(5, TimeUnit.SECONDS);
@@ -209,11 +207,9 @@ public class BrokerServiceLookupTest extends ProducerConsumerBase {
}
/**
- * Usecase: Redirection due to different cluster
- * 1. Broker1 runs on cluster: "use" and Broker2 runs on cluster: "use2"
- * 2. Broker1 receives "use2" cluster request => Broker1 reads "/clusters" from global-zookkeeper and
- * redirects request to Broker2 whch serves "use2"
- * 3. Broker2 receives redirect request and own namespace bundle
+ * Usecase: Redirection due to different cluster 1. Broker1 runs on cluster: "use" and Broker2 runs on cluster:
+ * "use2" 2. Broker1 receives "use2" cluster request => Broker1 reads "/clusters" from global-zookkeeper and
+ * redirects request to Broker2 whch serves "use2" 3. Broker2 receives redirect request and own namespace bundle
*
* @throws Exception
*/
@@ -235,18 +231,18 @@ public class BrokerServiceLookupTest extends ProducerConsumerBase {
conf2.setZookeeperServers("localhost:2181");
String broker2ServiceUrl = "pulsar://localhost:" + conf2.getBrokerServicePort();
- admin.clusters().createCluster(newCluster, new ClusterData("http://127.0.0.1:" + BROKER_WEBSERVICE_PORT, null, broker2ServiceUrl, null));
+ admin.clusters().createCluster(newCluster,
+ new ClusterData("http://127.0.0.1:" + BROKER_WEBSERVICE_PORT, null, broker2ServiceUrl, null));
admin.properties().createProperty(property,
new PropertyAdmin(Lists.newArrayList("appid1", "appid2"), Sets.newHashSet(newCluster)));
admin.namespaces().createNamespace(property + "/" + newCluster + "/my-ns");
-
PulsarService pulsar2 = startBroker(conf2);
pulsar.getLoadManager().get().writeLoadReportOnZookeeper();
pulsar2.getLoadManager().get().writeLoadReportOnZookeeper();
URI brokerServiceUrl = new URI(broker2ServiceUrl);
- PulsarClient pulsarClient2 = PulsarClient.create(brokerServiceUrl.toString(), new ClientConfiguration());
+ PulsarClient pulsarClient2 = PulsarClient.builder().serviceUrl(brokerServiceUrl.toString()).build();
// enable authorization: so, broker can validate cluster and redirect if finds different cluster
pulsar.getConfiguration().setAuthorizationEnabled(true);
@@ -266,16 +262,17 @@ public class BrokerServiceLookupTest extends ProducerConsumerBase {
/**** started broker-2 ****/
// load namespace-bundle by calling Broker2
- Consumer consumer = pulsarClient.subscribe("persistent://my-property2/use2/my-ns/my-topic1", "my-subscriber-name",
- new ConsumerConfiguration());
- Producer producer = pulsarClient2.createProducer("persistent://my-property2/use2/my-ns/my-topic1", new ProducerConfiguration());
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic("persistent://my-property2/use2/my-ns/my-topic1")
+ .subscriptionName("my-subscriber-name").subscribe();
+ Producer<byte[]> producer = pulsarClient2.newProducer().topic("persistent://my-property2/use2/my-ns/my-topic1")
+ .create();
for (int i = 0; i < 10; i++) {
String message = "my-message-" + i;
producer.send(message.getBytes());
}
- Message msg = null;
+ Message<byte[]> msg = null;
Set<String> messageSet = Sets.newHashSet();
for (int i = 0; i < 10; i++) {
msg = consumer.receive(5, TimeUnit.SECONDS);
@@ -298,10 +295,8 @@ public class BrokerServiceLookupTest extends ProducerConsumerBase {
}
/**
- * Create #PartitionedTopic and let it served by multiple brokers which requries
- * a. tcp partitioned-metadata-lookup
- * b. multiple topic-lookup
- * c. partitioned producer-consumer
+ * Create #PartitionedTopic and let it served by multiple brokers which requries a. tcp partitioned-metadata-lookup
+ * b. multiple topic-lookup c. partitioned producer-consumer
*
* @throws Exception
*/
@@ -312,9 +307,6 @@ public class BrokerServiceLookupTest extends ProducerConsumerBase {
int numPartitions = 8;
TopicName topicName = TopicName.get("persistent://my-property/use/my-ns/my-partitionedtopic1");
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setSubscriptionType(SubscriptionType.Exclusive);
-
admin.persistentTopics().createPartitionedTopic(topicName.toString(), numPartitions);
/**** start broker-2 ****/
@@ -331,7 +323,6 @@ public class BrokerServiceLookupTest extends ProducerConsumerBase {
pulsar.getLoadManager().get().writeLoadReportOnZookeeper();
pulsar2.getLoadManager().get().writeLoadReportOnZookeeper();
-
LoadManager loadManager1 = spy(pulsar.getLoadManager().get());
LoadManager loadManager2 = spy(pulsar2.getLoadManager().get());
Field loadManagerField = NamespaceService.class.getDeclaredField("loadManager");
@@ -344,20 +335,20 @@ public class BrokerServiceLookupTest extends ProducerConsumerBase {
// mock: redirect request to leader
doReturn(true).when(loadManager2).isCentralized();
loadManagerField.set(pulsar2.getNamespaceService(), new AtomicReference<>(loadManager2));
- /**** broker-2 started ****/
+ /**** broker-2 started ****/
- ProducerConfiguration producerConf = new ProducerConfiguration();
- producerConf.setMessageRoutingMode(MessageRoutingMode.RoundRobinPartition);
- Producer producer = pulsarClient.createProducer(topicName.toString(), producerConf);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName.toString())
+ .messageRoutingMode(MessageRoutingMode.RoundRobinPartition).create();
- Consumer consumer = pulsarClient.subscribe(topicName.toString(), "my-partitioned-subscriber", conf);
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topicName.toString())
+ .subscriptionName("my-partitioned-subscriber").subscribe();
for (int i = 0; i < 20; i++) {
String message = "my-message-" + i;
producer.send(message.getBytes());
}
- Message msg = null;
+ Message<byte[]> msg = null;
Set<String> messageSet = Sets.newHashSet();
for (int i = 0; i < 20; i++) {
msg = consumer.receive(5, TimeUnit.SECONDS);
@@ -380,109 +371,105 @@ public class BrokerServiceLookupTest extends ProducerConsumerBase {
}
/**
- * 1. Start broker1 and broker2 with tls enable
- * 2. Hit HTTPS lookup url at broker2 which redirects to HTTPS broker1
+ * 1. Start broker1 and broker2 with tls enable 2. Hit HTTPS lookup url at broker2 which redirects to HTTPS broker1
*
* @throws Exception
*/
@Test
- public void testWebserviceServiceTls() throws Exception {
- log.info("-- Starting {} test --", methodName);
- final String TLS_SERVER_CERT_FILE_PATH = "./src/test/resources/certificate/server.crt";
- final String TLS_SERVER_KEY_FILE_PATH = "./src/test/resources/certificate/server.key";
- final String TLS_CLIENT_CERT_FILE_PATH = "./src/test/resources/certificate/client.crt";
- final String TLS_CLIENT_KEY_FILE_PATH = "./src/test/resources/certificate/client.key";
-
- /**** start broker-2 ****/
- ServiceConfiguration conf2 = new ServiceConfiguration();
- conf2.setAdvertisedAddress("localhost");
- conf2.setBrokerServicePort(PortManager.nextFreePort());
- conf2.setBrokerServicePortTls(PortManager.nextFreePort());
- conf2.setWebServicePort(PortManager.nextFreePort());
- conf2.setWebServicePortTls(PortManager.nextFreePort());
- conf2.setAdvertisedAddress("localhost");
- conf2.setTlsAllowInsecureConnection(true);
- conf2.setTlsEnabled(true);
- conf2.setTlsCertificateFilePath(TLS_SERVER_CERT_FILE_PATH);
- conf2.setTlsKeyFilePath(TLS_SERVER_KEY_FILE_PATH);
- conf2.setClusterName(conf.getClusterName());
- conf2.setZookeeperServers("localhost:2181");
- PulsarService pulsar2 = startBroker(conf2);
-
- // restart broker1 with tls enabled
- conf.setTlsAllowInsecureConnection(true);
- conf.setTlsEnabled(true);
- conf.setTlsCertificateFilePath(TLS_SERVER_CERT_FILE_PATH);
- conf.setTlsKeyFilePath(TLS_SERVER_KEY_FILE_PATH);
- stopBroker();
- startBroker();
- pulsar.getLoadManager().get().writeLoadReportOnZookeeper();
- pulsar2.getLoadManager().get().writeLoadReportOnZookeeper();
-
- LoadManager loadManager1 = spy(pulsar.getLoadManager().get());
- LoadManager loadManager2 = spy(pulsar2.getLoadManager().get());
- Field loadManagerField = NamespaceService.class.getDeclaredField("loadManager");
- loadManagerField.setAccessible(true);
-
- // mock: redirect request to leader [2]
- doReturn(true).when(loadManager2).isCentralized();
- loadManagerField.set(pulsar2.getNamespaceService(), new AtomicReference<>(loadManager2));
-
- // mock: return Broker2 as a Least-loaded broker when leader receies
- // request [3]
- doReturn(true).when(loadManager1).isCentralized();
- SimpleResourceUnit resourceUnit = new SimpleResourceUnit(pulsar2.getWebServiceAddress(), null);
- doReturn(Optional.of(resourceUnit)).when(loadManager1).getLeastLoaded(any(ServiceUnitId.class));
- loadManagerField.set(pulsar.getNamespaceService(), new AtomicReference<>(loadManager1));
-
- /**** started broker-2 ****/
-
- URI brokerServiceUrl = new URI("pulsar://localhost:" + conf2.getBrokerServicePort());
- PulsarClient pulsarClient2 = PulsarClient.create(brokerServiceUrl.toString(), new ClientConfiguration());
-
- final String lookupResourceUrl = "/lookup/v2/destination/persistent/my-property/use/my-ns/my-topic1";
-
- // set client cert_key file
- KeyManager[] keyManagers = null;
- Certificate[] tlsCert = SecurityUtility.loadCertificatesFromPemFile(TLS_CLIENT_CERT_FILE_PATH);
- PrivateKey tlsKey = SecurityUtility.loadPrivateKeyFromPemFile(TLS_CLIENT_KEY_FILE_PATH);
- KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());
- ks.load(null, null);
- ks.setKeyEntry("private", tlsKey, "".toCharArray(), tlsCert);
- KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
- kmf.init(ks, "".toCharArray());
- keyManagers = kmf.getKeyManagers();
- TrustManager[] trustManagers = InsecureTrustManagerFactory.INSTANCE.getTrustManagers();
- SSLContext sslCtx = SSLContext.getInstance("TLS");
- sslCtx.init(keyManagers, trustManagers, new SecureRandom());
- HttpsURLConnection.setDefaultSSLSocketFactory(sslCtx.getSocketFactory());
-
-
- // hit broker2 url
- URLConnection con = new URL(pulsar2.getWebServiceAddressTls() + lookupResourceUrl).openConnection();
- log.info("orignal url: {}", con.getURL());
- con.connect();
- log.info("connected url: {} ", con.getURL());
- // assert connect-url: broker2-https
- assertEquals(con.getURL().getPort(), conf2.getWebServicePortTls());
- InputStream is = con.getInputStream();
- // assert redirect-url: broker1-https only
- log.info("redirected url: {}", con.getURL());
- assertEquals(con.getURL().getPort(), conf.getWebServicePortTls());
- is.close();
-
- pulsarClient2.close();
- pulsar2.close();
- loadManager1 = null;
- loadManager2 = null;
-
- }
+ public void testWebserviceServiceTls() throws Exception {
+ log.info("-- Starting {} test --", methodName);
+ final String TLS_SERVER_CERT_FILE_PATH = "./src/test/resources/certificate/server.crt";
+ final String TLS_SERVER_KEY_FILE_PATH = "./src/test/resources/certificate/server.key";
+ final String TLS_CLIENT_CERT_FILE_PATH = "./src/test/resources/certificate/client.crt";
+ final String TLS_CLIENT_KEY_FILE_PATH = "./src/test/resources/certificate/client.key";
+
+ /**** start broker-2 ****/
+ ServiceConfiguration conf2 = new ServiceConfiguration();
+ conf2.setAdvertisedAddress("localhost");
+ conf2.setBrokerServicePort(PortManager.nextFreePort());
+ conf2.setBrokerServicePortTls(PortManager.nextFreePort());
+ conf2.setWebServicePort(PortManager.nextFreePort());
+ conf2.setWebServicePortTls(PortManager.nextFreePort());
+ conf2.setAdvertisedAddress("localhost");
+ conf2.setTlsAllowInsecureConnection(true);
+ conf2.setTlsEnabled(true);
+ conf2.setTlsCertificateFilePath(TLS_SERVER_CERT_FILE_PATH);
+ conf2.setTlsKeyFilePath(TLS_SERVER_KEY_FILE_PATH);
+ conf2.setClusterName(conf.getClusterName());
+ conf2.setZookeeperServers("localhost:2181");
+ PulsarService pulsar2 = startBroker(conf2);
+
+ // restart broker1 with tls enabled
+ conf.setTlsAllowInsecureConnection(true);
+ conf.setTlsEnabled(true);
+ conf.setTlsCertificateFilePath(TLS_SERVER_CERT_FILE_PATH);
+ conf.setTlsKeyFilePath(TLS_SERVER_KEY_FILE_PATH);
+ stopBroker();
+ startBroker();
+ pulsar.getLoadManager().get().writeLoadReportOnZookeeper();
+ pulsar2.getLoadManager().get().writeLoadReportOnZookeeper();
+
+ LoadManager loadManager1 = spy(pulsar.getLoadManager().get());
+ LoadManager loadManager2 = spy(pulsar2.getLoadManager().get());
+ Field loadManagerField = NamespaceService.class.getDeclaredField("loadManager");
+ loadManagerField.setAccessible(true);
+
+ // mock: redirect request to leader [2]
+ doReturn(true).when(loadManager2).isCentralized();
+ loadManagerField.set(pulsar2.getNamespaceService(), new AtomicReference<>(loadManager2));
+
+ // mock: return Broker2 as a Least-loaded broker when leader receies
+ // request [3]
+ doReturn(true).when(loadManager1).isCentralized();
+ SimpleResourceUnit resourceUnit = new SimpleResourceUnit(pulsar2.getWebServiceAddress(), null);
+ doReturn(Optional.of(resourceUnit)).when(loadManager1).getLeastLoaded(any(ServiceUnitId.class));
+ loadManagerField.set(pulsar.getNamespaceService(), new AtomicReference<>(loadManager1));
+
+ /**** started broker-2 ****/
+
+ URI brokerServiceUrl = new URI("pulsar://localhost:" + conf2.getBrokerServicePort());
+ PulsarClient pulsarClient2 = PulsarClient.builder().serviceUrl(brokerServiceUrl.toString()).build();
+
+ final String lookupResourceUrl = "/lookup/v2/destination/persistent/my-property/use/my-ns/my-topic1";
+
+ // set client cert_key file
+ KeyManager[] keyManagers = null;
+ Certificate[] tlsCert = SecurityUtility.loadCertificatesFromPemFile(TLS_CLIENT_CERT_FILE_PATH);
+ PrivateKey tlsKey = SecurityUtility.loadPrivateKeyFromPemFile(TLS_CLIENT_KEY_FILE_PATH);
+ KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());
+ ks.load(null, null);
+ ks.setKeyEntry("private", tlsKey, "".toCharArray(), tlsCert);
+ KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
+ kmf.init(ks, "".toCharArray());
+ keyManagers = kmf.getKeyManagers();
+ TrustManager[] trustManagers = InsecureTrustManagerFactory.INSTANCE.getTrustManagers();
+ SSLContext sslCtx = SSLContext.getInstance("TLS");
+ sslCtx.init(keyManagers, trustManagers, new SecureRandom());
+ HttpsURLConnection.setDefaultSSLSocketFactory(sslCtx.getSocketFactory());
+
+ // hit broker2 url
+ URLConnection con = new URL(pulsar2.getWebServiceAddressTls() + lookupResourceUrl).openConnection();
+ log.info("orignal url: {}", con.getURL());
+ con.connect();
+ log.info("connected url: {} ", con.getURL());
+ // assert connect-url: broker2-https
+ assertEquals(con.getURL().getPort(), conf2.getWebServicePortTls());
+ InputStream is = con.getInputStream();
+ // assert redirect-url: broker1-https only
+ log.info("redirected url: {}", con.getURL());
+ assertEquals(con.getURL().getPort(), conf.getWebServicePortTls());
+ is.close();
+
+ pulsarClient2.close();
+ pulsar2.close();
+ loadManager1 = null;
+ loadManager2 = null;
+
+ }
/**
- * Discovery-Service lookup over binary-protocol
- * 1. Start discovery service
- * 2. start broker
- * 3. Create Producer/Consumer: by calling Discovery service for partitionedMetadata and topic lookup
+ * Discovery-Service lookup over binary-protocol 1. Start discovery service 2. start broker 3. Create
+ * Producer/Consumer: by calling Discovery service for partitionedMetadata and topic lookup
*
* @throws Exception
*/
@@ -499,18 +486,18 @@ public class BrokerServiceLookupTest extends ProducerConsumerBase {
// (2) lookup using discovery service
final String discoverySvcUrl = discoveryService.getServiceUrl();
- ClientConfiguration clientConfig = new ClientConfiguration();
- PulsarClient pulsarClient2 = PulsarClient.create(discoverySvcUrl, clientConfig);
- Consumer consumer = pulsarClient2.subscribe("persistent://my-property2/use2/my-ns/my-topic1", "my-subscriber-name",
- new ConsumerConfiguration());
- Producer producer = pulsarClient2.createProducer("persistent://my-property2/use2/my-ns/my-topic1", new ProducerConfiguration());
+ PulsarClient pulsarClient2 = PulsarClient.builder().serviceUrl(discoverySvcUrl).build();
+ Consumer<byte[]> consumer = pulsarClient2.newConsumer().topic("persistent://my-property2/use2/my-ns/my-topic1")
+ .subscriptionName("my-subscriber-name").subscribe();
+ Producer<byte[]> producer = pulsarClient2.newProducer().topic("persistent://my-property2/use2/my-ns/my-topic1")
+ .create();
for (int i = 0; i < 10; i++) {
String message = "my-message-" + i;
producer.send(message.getBytes());
}
- Message msg = null;
+ Message<byte[]> msg = null;
Set<String> messageSet = Sets.newHashSet();
for (int i = 0; i < 10; i++) {
msg = consumer.receive(5, TimeUnit.SECONDS);
@@ -526,12 +513,12 @@ public class BrokerServiceLookupTest extends ProducerConsumerBase {
}
-
/**
* Verify discovery-service binary-proto lookup using tls
*
* @throws Exception
*/
+ @SuppressWarnings("deprecation")
@Test
public void testDiscoveryLookupTls() throws Exception {
@@ -562,29 +549,26 @@ public class BrokerServiceLookupTest extends ProducerConsumerBase {
// (3) lookup using discovery service
final String discoverySvcUrl = discoveryService.getServiceUrlTls();
- ClientConfiguration clientConfig = new ClientConfiguration();
Map<String, String> authParams = new HashMap<>();
authParams.put("tlsCertFile", TLS_CLIENT_CERT_FILE_PATH);
authParams.put("tlsKeyFile", TLS_CLIENT_KEY_FILE_PATH);
Authentication auth = new AuthenticationTls();
auth.configure(authParams);
- clientConfig.setAuthentication(auth);
- clientConfig.setUseTls(true);
- clientConfig.setTlsAllowInsecureConnection(true);
-
- PulsarClient pulsarClient2 = PulsarClient.create(discoverySvcUrl, clientConfig);
- Consumer consumer = pulsarClient2.subscribe("persistent://my-property2/use2/my-ns/my-topic1", "my-subscriber-name",
- new ConsumerConfiguration());
- Producer producer = pulsarClient2.createProducer("persistent://my-property2/use2/my-ns/my-topic1", new ProducerConfiguration());
+ PulsarClient pulsarClient2 = PulsarClient.builder().serviceUrl(discoverySvcUrl).authentication(auth)
+ .enableTls(true).allowTlsInsecureConnection(true).build();
+ Consumer<byte[]> consumer = pulsarClient2.newConsumer().topic("persistent://my-property2/use2/my-ns/my-topic1")
+ .subscriptionName("my-subscriber-name").subscribe();
+ Producer<byte[]> producer = pulsarClient2.newProducer().topic("persistent://my-property2/use2/my-ns/my-topic1")
+ .create();
for (int i = 0; i < 10; i++) {
String message = "my-message-" + i;
producer.send(message.getBytes());
}
- Message msg = null;
+ Message<byte[]> msg = null;
Set<String> messageSet = Sets.newHashSet();
for (int i = 0; i < 10; i++) {
msg = consumer.receive(5, TimeUnit.SECONDS);
@@ -619,42 +603,45 @@ public class BrokerServiceLookupTest extends ProducerConsumerBase {
// (2) lookup using discovery service
final String discoverySvcUrl = discoveryService.getServiceUrl();
- ClientConfiguration clientConfig = new ClientConfiguration();
// set authentication data
- clientConfig.setAuthentication(new Authentication() {
+ Authentication auth = new Authentication() {
private static final long serialVersionUID = 1L;
@Override
public void close() throws IOException {
}
+
@Override
public String getAuthMethodName() {
return "auth";
}
+
@Override
public AuthenticationDataProvider getAuthData() throws PulsarClientException {
return new AuthenticationDataProvider() {
private static final long serialVersionUID = 1L;
};
}
+
@Override
public void configure(Map<String, String> authParams) {
}
+
@Override
public void start() throws PulsarClientException {
}
- });
+ };
- PulsarClient pulsarClient = PulsarClient.create(discoverySvcUrl, clientConfig);
- Consumer consumer = pulsarClient.subscribe("persistent://my-property/use2/my-ns/my-topic1",
- "my-subscriber-name", new ConsumerConfiguration());
- Producer producer = pulsarClient.createProducer("persistent://my-property/use2/my-ns/my-topic1",
- new ProducerConfiguration());
+ PulsarClient pulsarClient = PulsarClient.builder().serviceUrl(discoverySvcUrl).authentication(auth).build();
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic("persistent://my-property/use2/my-ns/my-topic1")
+ .subscriptionName("my-subscriber-name").subscribe();
+ Producer<byte[]> producer = pulsarClient.newProducer().topic("persistent://my-property/use2/my-ns/my-topic1")
+ .create();
for (int i = 0; i < 10; i++) {
String message = "my-message-" + i;
producer.send(message.getBytes());
}
- Message msg = null;
+ Message<byte[]> msg = null;
Set<String> messageSet = Sets.newHashSet();
for (int i = 0; i < 10; i++) {
msg = consumer.receive(5, TimeUnit.SECONDS);
@@ -687,35 +674,41 @@ public class BrokerServiceLookupTest extends ProducerConsumerBase {
discoveryService.start();
// (2) lookup using discovery service
final String discoverySvcUrl = discoveryService.getServiceUrl();
- ClientConfiguration clientConfig = new ClientConfiguration();
+
// set authentication data
- clientConfig.setAuthentication(new Authentication() {
+ Authentication auth = new Authentication() {
private static final long serialVersionUID = 1L;
@Override
public void close() throws IOException {
}
+
@Override
public String getAuthMethodName() {
return "auth";
}
+
@Override
public AuthenticationDataProvider getAuthData() throws PulsarClientException {
return new AuthenticationDataProvider() {
private static final long serialVersionUID = 1L;
};
}
+
@Override
public void configure(Map<String, String> authParams) {
}
+
@Override
public void start() throws PulsarClientException {
}
- });
- PulsarClient pulsarClient = PulsarClient.create(discoverySvcUrl, clientConfig);
+ };
+
+ @Cleanup
+ PulsarClient pulsarClient = PulsarClient.builder().serviceUrl(discoverySvcUrl).authentication(auth).build();
try {
- pulsarClient.subscribe("persistent://my-property/use2/my-ns/my-topic1", "my-subscriber-name",
- new ConsumerConfiguration());
+ pulsarClient.newConsumer().topic("persistent://my-property/use2/my-ns/my-topic1")
+ .subscriptionName("my-subscriber-name").subscribe();
fail("should have failed due to authentication");
} catch (PulsarClientException e) {
// Ok: expected
@@ -740,35 +733,41 @@ public class BrokerServiceLookupTest extends ProducerConsumerBase {
discoveryService.start();
// (2) lookup using discovery service
final String discoverySvcUrl = discoveryService.getServiceUrl();
- ClientConfiguration clientConfig = new ClientConfiguration();
+
// set authentication data
- clientConfig.setAuthentication(new Authentication() {
+ Authentication auth = new Authentication() {
private static final long serialVersionUID = 1L;
@Override
public void close() throws IOException {
}
+
@Override
public String getAuthMethodName() {
return "auth";
}
+
@Override
public AuthenticationDataProvider getAuthData() throws PulsarClientException {
return new AuthenticationDataProvider() {
private static final long serialVersionUID = 1L;
};
}
+
@Override
public void configure(Map<String, String> authParams) {
}
+
@Override
public void start() throws PulsarClientException {
}
- });
- PulsarClient pulsarClient = PulsarClient.create(discoverySvcUrl, clientConfig);
+ };
+
+ @Cleanup
+ PulsarClient pulsarClient = PulsarClient.builder().serviceUrl(discoverySvcUrl).authentication(auth).build();
try {
- pulsarClient.subscribe("persistent://my-property/use2/my-ns/my-topic1", "my-subscriber-name",
- new ConsumerConfiguration());
+ pulsarClient.newConsumer().topic("persistent://my-property/use2/my-ns/my-topic1")
+ .subscriptionName("my-subscriber-name").subscribe();
fail("should have failed due to authentication");
} catch (PulsarClientException e) {
// Ok: expected
@@ -833,11 +832,12 @@ public class BrokerServiceLookupTest extends ProducerConsumerBase {
loadManagerField.set(pulsar.getNamespaceService(), new AtomicReference<>(loadManager1));
URI broker2ServiceUrl = new URI("pulsar://localhost:" + conf2.getBrokerServicePort());
- PulsarClient pulsarClient2 = PulsarClient.create(broker2ServiceUrl.toString(), new ClientConfiguration());
+ PulsarClient pulsarClient2 = PulsarClient.builder().serviceUrl(broker2ServiceUrl.toString()).build();
// (3) Broker-2 receives topic-1 request, creates local-policies and sets the watch
final String topic1 = "persistent://" + namespace + "/topic1";
- Consumer consumer1 = pulsarClient2.subscribe(topic1, "my-subscriber-name", new ConsumerConfiguration());
+ Consumer<byte[]> consumer1 = pulsarClient2.newConsumer().topic(topic1).subscriptionName("my-subscriber-name")
+ .subscribe();
Set<String> serviceUnits1 = pulsar.getNamespaceService().getOwnedServiceUnits().stream()
.map(nb -> nb.toString()).collect(Collectors.toSet());
@@ -865,10 +865,10 @@ public class BrokerServiceLookupTest extends ProducerConsumerBase {
// (7) Make lookup request again to Broker-2 which should succeed.
final String topic2 = "persistent://" + namespace + "/topic2";
- Consumer consumer2 = pulsarClient.subscribe(topic2, "my-subscriber-name", new ConsumerConfiguration());
+ Consumer<byte[]> consumer2 = pulsarClient.newConsumer().topic(topic2).subscriptionName("my-subscriber-name")
+ .subscribe();
- NamespaceBundle bundleInBroker1AfterSplit = pulsar2.getNamespaceService()
- .getBundle(TopicName.get(topic2));
+ NamespaceBundle bundleInBroker1AfterSplit = pulsar2.getNamespaceService().getBundle(TopicName.get(topic2));
assertFalse(bundleInBroker1AfterSplit.equals(unsplitBundle));
consumer1.close();
@@ -942,11 +942,12 @@ public class BrokerServiceLookupTest extends ProducerConsumerBase {
loadManagerField.set(pulsar.getNamespaceService(), new AtomicReference<>(loadManager1));
URI broker2ServiceUrl = new URI("pulsar://localhost:" + conf2.getBrokerServicePort());
- PulsarClient pulsarClient2 = PulsarClient.create(broker2ServiceUrl.toString(), new ClientConfiguration());
+ PulsarClient pulsarClient2 = PulsarClient.builder().serviceUrl(broker2ServiceUrl.toString()).build();
// (3) Broker-2 receives topic-1 request, creates local-policies and sets the watch
final String topic1 = "persistent://" + namespace + "/topic1";
- Consumer consumer1 = pulsarClient2.subscribe(topic1, "my-subscriber-name", new ConsumerConfiguration());
+ Consumer<byte[]> consumer1 = pulsarClient2.newConsumer().topic(topic1)
+ .subscriptionName("my-subscriber-name").subscribe();
Set<String> serviceUnits1 = pulsar.getNamespaceService().getOwnedServiceUnits().stream()
.map(nb -> nb.toString()).collect(Collectors.toSet());
@@ -994,10 +995,10 @@ public class BrokerServiceLookupTest extends ProducerConsumerBase {
// (7) Make lookup request again to Broker-2 which should succeed.
final String topic2 = "persistent://" + namespace + "/topic2";
- Consumer consumer2 = pulsarClient.subscribe(topic2, "my-subscriber-name", new ConsumerConfiguration());
+ Consumer<byte[]> consumer2 = pulsarClient.newConsumer().topic(topic2).subscriptionName("my-subscriber-name")
+ .subscribe();
- NamespaceBundle bundleInBroker1AfterSplit = pulsar2.getNamespaceService()
- .getBundle(TopicName.get(topic2));
+ NamespaceBundle bundleInBroker1AfterSplit = pulsar2.getNamespaceService().getBundle(TopicName.get(topic2));
assertFalse(bundleInBroker1AfterSplit.equals(unsplitBundle));
consumer1.close();
@@ -1152,13 +1153,16 @@ public class BrokerServiceLookupTest extends ProducerConsumerBase {
@Override
public void close() throws IOException {
}
+
@Override
public void initialize(ServiceConfiguration config) throws IOException {
}
+
@Override
public String getAuthMethodName() {
return "auth";
}
+
@Override
public String authenticate(AuthenticationDataSource authData) throws AuthenticationException {
return "appid1";
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/ClientDeduplicationTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/ClientDeduplicationTest.java
index fb5cc0f..de8c24c 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/ClientDeduplicationTest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/ClientDeduplicationTest.java
@@ -46,9 +46,9 @@ public class ClientDeduplicationTest extends ProducerConsumerBase {
String topic = "persistent://my-property/use/my-ns/testProducerSequenceAfterReconnect";
admin.namespaces().setDeduplicationStatus("my-property/use/my-ns", true);
- ProducerConfiguration conf = new ProducerConfiguration();
- conf.setProducerName("my-producer-name");
- Producer producer = pulsarClient.createProducer(topic, conf);
+ ProducerBuilder<byte[]> producerBuilder = pulsarClient.newProducer().topic(topic)
+ .producerName("my-producer-name");
+ Producer<byte[]> producer = producerBuilder.create();
assertEquals(producer.getLastSequenceId(), -1L);
@@ -60,7 +60,7 @@ public class ClientDeduplicationTest extends ProducerConsumerBase {
producer.close();
- producer = pulsarClient.createProducer(topic, conf);
+ producer = producerBuilder.create();
assertEquals(producer.getLastSequenceId(), 9L);
for (int i = 10; i < 20; i++) {
@@ -77,9 +77,9 @@ public class ClientDeduplicationTest extends ProducerConsumerBase {
String topic = "persistent://my-property/use/my-ns/testProducerSequenceAfterRestart";
admin.namespaces().setDeduplicationStatus("my-property/use/my-ns", true);
- ProducerConfiguration conf = new ProducerConfiguration();
- conf.setProducerName("my-producer-name");
- Producer producer = pulsarClient.createProducer(topic, conf);
+ ProducerBuilder<byte[]> producerBuilder = pulsarClient.newProducer().topic(topic)
+ .producerName("my-producer-name");
+ Producer<byte[]> producer = producerBuilder.create();
assertEquals(producer.getLastSequenceId(), -1L);
@@ -94,7 +94,7 @@ public class ClientDeduplicationTest extends ProducerConsumerBase {
// Kill and restart broker
restartBroker();
- producer = pulsarClient.createProducer(topic, conf);
+ producer = producerBuilder.create();
assertEquals(producer.getLastSequenceId(), 9L);
for (int i = 10; i < 20; i++) {
@@ -111,16 +111,15 @@ public class ClientDeduplicationTest extends ProducerConsumerBase {
String topic = "persistent://my-property/use/my-ns/testProducerDeduplication";
admin.namespaces().setDeduplicationStatus("my-property/use/my-ns", true);
- ProducerConfiguration conf = new ProducerConfiguration();
- conf.setProducerName("my-producer-name");
-
// Set infinite timeout
- conf.setSendTimeout(0, TimeUnit.SECONDS);
- Producer producer = pulsarClient.createProducer(topic, conf);
+ ProducerBuilder<byte[]> producerBuilder = pulsarClient.newProducer().topic(topic)
+ .producerName("my-producer-name").sendTimeout(0, TimeUnit.SECONDS);
+ Producer<byte[]> producer = producerBuilder.create();
assertEquals(producer.getLastSequenceId(), -1L);
- Consumer consumer = pulsarClient.subscribe(topic, "my-subscription");
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topic).subscriptionName("my-subscription")
+ .subscribe();
producer.send(MessageBuilder.create().setContent("my-message-0".getBytes()).setSequenceId(0).build());
producer.send(MessageBuilder.create().setContent("my-message-1".getBytes()).setSequenceId(1).build());
@@ -133,19 +132,19 @@ public class ClientDeduplicationTest extends ProducerConsumerBase {
producer.close();
for (int i = 0; i < 3; i++) {
- Message msg = consumer.receive();
+ Message<byte[]> msg = consumer.receive();
assertEquals(new String(msg.getData()), "my-message-" + i);
consumer.acknowledge(msg);
}
// No other messages should be received
- Message msg = consumer.receive(1, TimeUnit.SECONDS);
+ Message<byte[]> msg = consumer.receive(1, TimeUnit.SECONDS);
assertNull(msg);
// Kill and restart broker
restartBroker();
- producer = pulsarClient.createProducer(topic, conf);
+ producer = producerBuilder.create();
assertEquals(producer.getLastSequenceId(), 2L);
// Repeat the messages and verify they're not received by consumer
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/ClientErrorsTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/ClientErrorsTest.java
index 2ef60c1..5d2b922 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/ClientErrorsTest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/ClientErrorsTest.java
@@ -30,19 +30,12 @@ import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicReference;
import org.apache.bookkeeper.test.PortManager;
-import org.apache.pulsar.client.api.ClientConfiguration;
-import org.apache.pulsar.client.api.Consumer;
-import org.apache.pulsar.client.api.ConsumerConfiguration;
-import org.apache.pulsar.client.api.Producer;
-import org.apache.pulsar.client.api.PulsarClient;
-import org.apache.pulsar.client.api.PulsarClientException;
-import org.apache.pulsar.client.api.SubscriptionType;
import org.apache.pulsar.client.api.PulsarClientException.LookupException;
import org.apache.pulsar.client.impl.ConsumerBase;
import org.apache.pulsar.client.impl.ProducerBase;
import org.apache.pulsar.common.api.Commands;
-import org.apache.pulsar.common.api.proto.PulsarApi.ServerError;
import org.apache.pulsar.common.api.proto.PulsarApi.CommandLookupTopicResponse.LookupType;
+import org.apache.pulsar.common.api.proto.PulsarApi.ServerError;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
@@ -78,13 +71,12 @@ public class ClientErrorsTest {
public void testMockBrokerService() throws Exception {
// test default actions of mock broker service
try {
- PulsarClient client = PulsarClient.create("http://127.0.0.1:" + WEB_SERVICE_PORT);
+ PulsarClient client = PulsarClient.builder().serviceUrl("http://127.0.0.1:" + WEB_SERVICE_PORT).build();
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setSubscriptionType(SubscriptionType.Exclusive);
- Consumer consumer = client.subscribe("persistent://prop/use/ns/t1", "sub1", conf);
+ Consumer<byte[]> consumer = client.newConsumer().topic("persistent://prop/use/ns/t1")
+ .subscriptionName("sub1").subscribe();
- Producer producer = client.createProducer("persistent://prop/use/ns/t1");
+ Producer<byte[]> producer = client.newProducer().topic("persistent://prop/use/ns/t1").create();
Thread.sleep(ASYNC_EVENT_COMPLETION_WAIT);
producer.send("message".getBytes());
Thread.sleep(ASYNC_EVENT_COMPLETION_WAIT);
@@ -110,7 +102,7 @@ public class ClientErrorsTest {
}
private void producerCreateFailWithoutRetry(String topic) throws Exception {
- PulsarClient client = PulsarClient.create("http://127.0.0.1:" + WEB_SERVICE_PORT);
+ PulsarClient client = PulsarClient.builder().serviceUrl("http://127.0.0.1:" + WEB_SERVICE_PORT).build();
final AtomicInteger counter = new AtomicInteger(0);
mockBrokerService.setHandleProducer((ctx, producer) -> {
@@ -124,7 +116,7 @@ public class ClientErrorsTest {
});
try {
- Producer producer = client.createProducer(topic);
+ client.newProducer().topic(topic).create();
} catch (Exception e) {
if (e.getMessage().equals(ASSERTION_ERROR)) {
fail("Producer create should not retry on auth error");
@@ -146,7 +138,7 @@ public class ClientErrorsTest {
}
private void producerCreateSuccessAfterRetry(String topic) throws Exception {
- PulsarClient client = PulsarClient.create("http://127.0.0.1:" + WEB_SERVICE_PORT);
+ PulsarClient client = PulsarClient.builder().serviceUrl("http://127.0.0.1:" + WEB_SERVICE_PORT).build();
final AtomicInteger counter = new AtomicInteger(0);
mockBrokerService.setHandleProducer((ctx, producer) -> {
@@ -158,7 +150,7 @@ public class ClientErrorsTest {
});
try {
- Producer producer = client.createProducer(topic);
+ client.newProducer().topic(topic).create();
} catch (Exception e) {
fail("Should not fail");
}
@@ -178,10 +170,8 @@ public class ClientErrorsTest {
}
private void producerCreateFailAfterRetryTimeout(String topic) throws Exception {
- ClientConfiguration conf = new ClientConfiguration();
- conf.setOperationTimeout(1, TimeUnit.SECONDS);
-
- PulsarClient client = PulsarClient.create("http://127.0.0.1:" + WEB_SERVICE_PORT, conf);
+ PulsarClient client = PulsarClient.builder().serviceUrl("http://127.0.0.1:" + WEB_SERVICE_PORT)
+ .operationTimeout(1, TimeUnit.SECONDS).build();
final AtomicInteger counter = new AtomicInteger(0);
mockBrokerService.setHandleProducer((ctx, producer) -> {
@@ -196,7 +186,7 @@ public class ClientErrorsTest {
});
try {
- Producer producer = client.createProducer(topic);
+ client.newProducer().topic(topic).create();
fail("Should have failed");
} catch (Exception e) {
// we fail even on the retriable error
@@ -218,7 +208,7 @@ public class ClientErrorsTest {
}
private void producerFailDoesNotFailOtherProducer(String topic1, String topic2) throws Exception {
- PulsarClient client = PulsarClient.create("http://127.0.0.1:" + WEB_SERVICE_PORT);
+ PulsarClient client = PulsarClient.builder().serviceUrl("http://127.0.0.1:" + WEB_SERVICE_PORT).build();
final AtomicInteger counter = new AtomicInteger(0);
mockBrokerService.setHandleProducer((ctx, producer) -> {
@@ -228,14 +218,13 @@ public class ClientErrorsTest {
return;
}
ctx.writeAndFlush(Commands.newProducerSuccess(producer.getRequestId(), "default-producer"));
-
});
- ProducerBase producer1 = (ProducerBase) client.createProducer(topic1);
+ ProducerBase<byte[]> producer1 = (ProducerBase<byte[]>) client.newProducer().topic(topic1).create();
- ProducerBase producer2 = null;
+ ProducerBase<byte[]> producer2 = null;
try {
- producer2 = (ProducerBase) client.createProducer(topic2);
+ producer2 = (ProducerBase<byte[]>) client.newProducer().topic(topic2).create();
fail("Should have failed");
} catch (Exception e) {
// ok
@@ -259,7 +248,7 @@ public class ClientErrorsTest {
}
private void producerContinuousRetryAfterSendFail(String topic) throws Exception {
- PulsarClient client = PulsarClient.create("http://127.0.0.1:" + WEB_SERVICE_PORT);
+ PulsarClient client = PulsarClient.builder().serviceUrl("http://127.0.0.1:" + WEB_SERVICE_PORT).build();
final AtomicInteger counter = new AtomicInteger(0);
mockBrokerService.setHandleProducer((ctx, producer) -> {
@@ -283,7 +272,7 @@ public class ClientErrorsTest {
});
try {
- Producer producer = client.createProducer(topic);
+ Producer<byte[]> producer = client.newProducer().topic(topic).create();
producer.send("message".getBytes());
} catch (Exception e) {
fail("Should not fail");
@@ -307,7 +296,7 @@ public class ClientErrorsTest {
@Test
public void testLookupWithDisconnection() throws Exception {
final String brokerUrl = "pulsar://127.0.0.1:" + BROKER_SERVICE_PORT;
- PulsarClient client = PulsarClient.create(brokerUrl);
+ PulsarClient client = PulsarClient.builder().serviceUrl(brokerUrl).build();
final AtomicInteger counter = new AtomicInteger(0);
String topic = "persistent://prop/use/ns/t1";
@@ -326,9 +315,7 @@ public class ClientErrorsTest {
});
try {
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setSubscriptionType(SubscriptionType.Exclusive);
- Consumer consumer = client.subscribe(topic, "sub1", conf);
+ client.newConsumer().topic(topic).subscriptionName("sub1").subscribe();
} catch (Exception e) {
if (e.getMessage().equals(ASSERTION_ERROR)) {
fail("Subscribe should not retry on persistence error");
@@ -342,7 +329,7 @@ public class ClientErrorsTest {
}
private void subscribeFailWithoutRetry(String topic) throws Exception {
- PulsarClient client = PulsarClient.create("http://127.0.0.1:" + WEB_SERVICE_PORT);
+ PulsarClient client = PulsarClient.builder().serviceUrl("http://127.0.0.1:" + WEB_SERVICE_PORT).build();
final AtomicInteger counter = new AtomicInteger(0);
mockBrokerService.setHandleSubscribe((ctx, subscribe) -> {
@@ -356,9 +343,7 @@ public class ClientErrorsTest {
});
try {
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setSubscriptionType(SubscriptionType.Exclusive);
- Consumer consumer = client.subscribe(topic, "sub1", conf);
+ client.newConsumer().topic(topic).subscriptionName("sub1").subscribe();
} catch (Exception e) {
if (e.getMessage().equals(ASSERTION_ERROR)) {
fail("Subscribe should not retry on persistence error");
@@ -380,7 +365,7 @@ public class ClientErrorsTest {
}
private void subscribeSuccessAfterRetry(String topic) throws Exception {
- PulsarClient client = PulsarClient.create("http://127.0.0.1:" + WEB_SERVICE_PORT);
+ PulsarClient client = PulsarClient.builder().serviceUrl("http://127.0.0.1:" + WEB_SERVICE_PORT).build();
final AtomicInteger counter = new AtomicInteger(0);
mockBrokerService.setHandleSubscribe((ctx, subscribe) -> {
@@ -392,9 +377,7 @@ public class ClientErrorsTest {
});
try {
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setSubscriptionType(SubscriptionType.Exclusive);
- Consumer consumer = client.subscribe(topic, "sub1", conf);
+ client.newConsumer().topic(topic).subscriptionName("sub1").subscribe();
} catch (Exception e) {
fail("Should not fail");
}
@@ -414,10 +397,8 @@ public class ClientErrorsTest {
}
private void subscribeFailAfterRetryTimeout(String topic) throws Exception {
- ClientConfiguration conf = new ClientConfiguration();
- conf.setOperationTimeout(200, TimeUnit.MILLISECONDS);
-
- PulsarClient client = PulsarClient.create("http://127.0.0.1:" + WEB_SERVICE_PORT, conf);
+ PulsarClient client = PulsarClient.builder().serviceUrl("http://127.0.0.1:" + WEB_SERVICE_PORT)
+ .operationTimeout(200, TimeUnit.MILLISECONDS).build();
final AtomicInteger counter = new AtomicInteger(0);
mockBrokerService.setHandleSubscribe((ctx, subscribe) -> {
@@ -432,9 +413,7 @@ public class ClientErrorsTest {
});
try {
- ConsumerConfiguration cConf = new ConsumerConfiguration();
- cConf.setSubscriptionType(SubscriptionType.Exclusive);
- client.subscribe(topic, "sub1", cConf);
+ client.newConsumer().topic(topic).subscriptionName("sub1").subscribe();
fail("Should have failed");
} catch (Exception e) {
// we fail even on the retriable error
@@ -456,7 +435,7 @@ public class ClientErrorsTest {
}
private void subscribeFailDoesNotFailOtherConsumer(String topic1, String topic2) throws Exception {
- PulsarClient client = PulsarClient.create("http://127.0.0.1:" + WEB_SERVICE_PORT);
+ PulsarClient client = PulsarClient.builder().serviceUrl("http://127.0.0.1:" + WEB_SERVICE_PORT).build();
final AtomicInteger counter = new AtomicInteger(0);
mockBrokerService.setHandleSubscribe((ctx, subscribe) -> {
@@ -469,13 +448,12 @@ public class ClientErrorsTest {
});
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setSubscriptionType(SubscriptionType.Exclusive);
- ConsumerBase consumer1 = (ConsumerBase) client.subscribe(topic1, "sub1", conf);
+ ConsumerBase<byte[]> consumer1 = (ConsumerBase<byte[]>) client.newConsumer().topic(topic1)
+ .subscriptionName("sub1").subscribe();
- ConsumerBase consumer2 = null;
+ ConsumerBase<byte[]> consumer2 = null;
try {
- consumer2 = (ConsumerBase) client.subscribe(topic2, "sub1", conf);
+ consumer2 = (ConsumerBase<byte[]>) client.newConsumer().topic(topic2).subscriptionName("sub1").subscribe();
fail("Should have failed");
} catch (Exception e) {
// ok
@@ -492,7 +470,7 @@ public class ClientErrorsTest {
// other producers and fail
@Test
public void testOneProducerFailShouldCloseAllProducersInPartitionedProducer() throws Exception {
- PulsarClient client = PulsarClient.create("http://127.0.0.1:" + WEB_SERVICE_PORT);
+ PulsarClient client = PulsarClient.builder().serviceUrl("http://127.0.0.1:" + WEB_SERVICE_PORT).build();
final AtomicInteger producerCounter = new AtomicInteger(0);
final AtomicInteger closeCounter = new AtomicInteger(0);
@@ -510,7 +488,7 @@ public class ClientErrorsTest {
});
try {
- Producer producer = client.createProducer("persistent://prop/use/ns/multi-part-t1");
+ client.newProducer().topic("persistent://prop/use/ns/multi-part-t1").create();
fail("Should have failed with an authorization error");
} catch (Exception e) {
assertTrue(e instanceof PulsarClientException.AuthorizationException);
@@ -527,7 +505,7 @@ public class ClientErrorsTest {
// of other consumers and fail
@Test
public void testOneConsumerFailShouldCloseAllConsumersInPartitionedConsumer() throws Exception {
- PulsarClient client = PulsarClient.create("http://127.0.0.1:" + WEB_SERVICE_PORT);
+ PulsarClient client = PulsarClient.builder().serviceUrl("http://127.0.0.1:" + WEB_SERVICE_PORT).build();
final AtomicInteger subscribeCounter = new AtomicInteger(0);
final AtomicInteger closeCounter = new AtomicInteger(0);
@@ -546,7 +524,7 @@ public class ClientErrorsTest {
});
try {
- Consumer consumer = client.subscribe("persistent://prop/use/ns/multi-part-t1", "my-sub");
+ client.newConsumer().topic("persistent://prop/use/ns/multi-part-t1").subscriptionName("sub1").subscribe();
fail("Should have failed with an authentication error");
} catch (Exception e) {
assertTrue(e instanceof PulsarClientException.AuthenticationException);
@@ -561,7 +539,7 @@ public class ClientErrorsTest {
@Test
public void testFlowSendWhenPartitionedSubscribeCompletes() throws Exception {
- PulsarClient client = PulsarClient.create("http://127.0.0.1:" + WEB_SERVICE_PORT);
+ PulsarClient client = PulsarClient.builder().serviceUrl("http://127.0.0.1:" + WEB_SERVICE_PORT).build();
AtomicInteger subscribed = new AtomicInteger();
AtomicBoolean fail = new AtomicBoolean(false);
@@ -578,7 +556,7 @@ public class ClientErrorsTest {
}
});
- Consumer consumer = client.subscribe("persistent://prop/use/ns/multi-part-t1", "my-sub");
+ client.newConsumer().topic("persistent://prop/use/ns/multi-part-t1").subscriptionName("sub1").subscribe();
if (fail.get()) {
fail("Flow command should have been sent after all 4 partitions subscribe successfully");
@@ -613,8 +591,8 @@ public class ClientErrorsTest {
ctx.writeAndFlush(Commands.newSendReceipt(0, 0, 1, 1));
});
- PulsarClient client = PulsarClient.create("http://127.0.0.1:" + WEB_SERVICE_PORT);
- Producer producer = client.createProducer("persistent://prop/use/ns/t1");
+ PulsarClient client = PulsarClient.builder().serviceUrl("http://127.0.0.1:" + WEB_SERVICE_PORT).build();
+ Producer<byte[]> producer = client.newProducer().topic("persistent://prop/use/ns/t1").create();
// close the cnx after creating the producer
channelCtx.get().channel().close().get();
@@ -651,8 +629,8 @@ public class ClientErrorsTest {
ctx.writeAndFlush(Commands.newSuccess(subscribe.getRequestId()));
});
- PulsarClient client = PulsarClient.create("http://127.0.0.1:" + WEB_SERVICE_PORT);
- client.subscribe("persistent://prop/use/ns/t1", "sub");
+ PulsarClient client = PulsarClient.builder().serviceUrl("http://127.0.0.1:" + WEB_SERVICE_PORT).build();
+ client.newConsumer().topic("persistent://prop/use/ns/t1").subscriptionName("sub1").subscribe();
// close the cnx after creating the producer
channelCtx.get().channel().close();
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/DispatcherBlockConsumerTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/DispatcherBlockConsumerTest.java
index f2c63e3..28e0a4a 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/DispatcherBlockConsumerTest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/DispatcherBlockConsumerTest.java
@@ -27,8 +27,6 @@ import static org.testng.Assert.assertTrue;
import static org.testng.Assert.fail;
import java.lang.reflect.Field;
-import java.util.*;
-import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -92,7 +90,7 @@ public class DispatcherBlockConsumerTest extends ProducerConsumerBase {
*
* @throws Exception
*/
- @Test(timeOut=10000)
+ @Test(timeOut = 10000)
public void testConsumerBlockingWithUnAckedMessagesAtDispatcher() throws Exception {
log.info("-- Starting {} test --", methodName);
@@ -107,18 +105,16 @@ public class DispatcherBlockConsumerTest extends ProducerConsumerBase {
final String subscriberName = "subscriber-1";
pulsar.getConfiguration().setMaxUnackedMessagesPerSubscription(unackMsgAllowed);
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setReceiverQueueSize(receiverQueueSize);
- conf.setSubscriptionType(SubscriptionType.Shared);
- Consumer<byte[]> consumer1 = pulsarClient.subscribe(topicName, subscriberName, conf);
- Consumer<byte[]> consumer2 = pulsarClient.subscribe(topicName, subscriberName, conf);
- Consumer<byte[]> consumer3 = pulsarClient.subscribe(topicName, subscriberName, conf);
- List<Consumer<byte[]>> consumers = Lists.newArrayList(consumer1, consumer2, consumer3);
-
- ProducerConfiguration producerConf = new ProducerConfiguration();
+ ConsumerBuilder<byte[]> consumerBuilder = pulsarClient.newConsumer().topic(topicName)
+ .subscriptionName(subscriberName).receiverQueueSize(receiverQueueSize)
+ .subscriptionType(SubscriptionType.Shared);
+ Consumer<byte[]> consumer1 = consumerBuilder.subscribe();
+ Consumer<byte[]> consumer2 = consumerBuilder.subscribe();
+ Consumer<byte[]> consumer3 = consumerBuilder.subscribe();
+ List<Consumer<?>> consumers = Lists.newArrayList(consumer1, consumer2, consumer3);
- Producer producer = pulsarClient.createProducer("persistent://my-property/use/my-ns/unacked-topic",
- producerConf);
+ Producer<byte[]> producer = pulsarClient.newProducer()
+ .topic("persistent://my-property/use/my-ns/unacked-topic").create();
// (1) Produced Messages
for (int i = 0; i < totalProducedMsgs; i++) {
@@ -127,8 +123,8 @@ public class DispatcherBlockConsumerTest extends ProducerConsumerBase {
}
// (2) try to consume messages: but will be able to consume number of messages = unackMsgAllowed
- Message msg = null;
- Map<Message, Consumer> messages = Maps.newHashMap();
+ Message<?> msg = null;
+ Map<Message<?>, Consumer<?>> messages = Maps.newHashMap();
for (int i = 0; i < 3; i++) {
for (int j = 0; j < totalProducedMsgs; j++) {
msg = consumers.get(i).receive(500, TimeUnit.MILLISECONDS);
@@ -201,7 +197,8 @@ public class DispatcherBlockConsumerTest extends ProducerConsumerBase {
*
* @throws Exception
*/
- @Test(timeOut=10000)
+ @SuppressWarnings("unchecked")
+ @Test(timeOut = 10000)
public void testConsumerBlockingWithUnAckedMessagesAndRedelivery() throws Exception {
log.info("-- Starting {} test --", methodName);
@@ -214,18 +211,16 @@ public class DispatcherBlockConsumerTest extends ProducerConsumerBase {
final String subscriberName = "subscriber-1";
pulsar.getConfiguration().setMaxUnackedMessagesPerSubscription(unackMsgAllowed);
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setReceiverQueueSize(receiverQueueSize);
- conf.setSubscriptionType(SubscriptionType.Shared);
- ConsumerImpl consumer1 = (ConsumerImpl) pulsarClient.subscribe(topicName, subscriberName, conf);
- ConsumerImpl consumer2 = (ConsumerImpl) pulsarClient.subscribe(topicName, subscriberName, conf);
- ConsumerImpl consumer3 = (ConsumerImpl) pulsarClient.subscribe(topicName, subscriberName, conf);
+ ConsumerBuilder<byte[]> consumerBuilder = pulsarClient.newConsumer().topic(topicName)
+ .subscriptionName(subscriberName).receiverQueueSize(receiverQueueSize)
+ .subscriptionType(SubscriptionType.Shared);
+ ConsumerImpl<byte[]> consumer1 = (ConsumerImpl<byte[]>) consumerBuilder.subscribe();
+ ConsumerImpl<byte[]> consumer2 = (ConsumerImpl<byte[]>) consumerBuilder.subscribe();
+ ConsumerImpl<byte[]> consumer3 = (ConsumerImpl<byte[]>) consumerBuilder.subscribe();
List<ConsumerImpl<byte[]>> consumers = Lists.newArrayList(consumer1, consumer2, consumer3);
- ProducerConfiguration producerConf = new ProducerConfiguration();
-
- Producer producer = pulsarClient.createProducer("persistent://my-property/use/my-ns/unacked-topic",
- producerConf);
+ Producer<byte[]> producer = pulsarClient.newProducer()
+ .topic("persistent://my-property/use/my-ns/unacked-topic").create();
// (1) Produced Messages
for (int i = 0; i < totalProducedMsgs; i++) {
@@ -234,8 +229,8 @@ public class DispatcherBlockConsumerTest extends ProducerConsumerBase {
}
// (2) try to consume messages: but will be able to consume number of messages = unackMsgAllowed
- Message msg = null;
- Multimap<ConsumerImpl, MessageId> messages = ArrayListMultimap.create();
+ Message<?> msg = null;
+ Multimap<ConsumerImpl<?>, MessageId> messages = ArrayListMultimap.create();
for (int i = 0; i < 3; i++) {
for (int j = 0; j < totalProducedMsgs; j++) {
msg = consumers.get(i).receive(500, TimeUnit.MILLISECONDS);
@@ -316,15 +311,11 @@ public class DispatcherBlockConsumerTest extends ProducerConsumerBase {
final String subscriberName = "subscriber-1";
pulsar.getConfiguration().setMaxUnackedMessagesPerSubscription(unackMsgAllowed);
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setReceiverQueueSize(receiverQueueSize);
- conf.setSubscriptionType(SubscriptionType.Shared);
- Consumer consumer1 = pulsarClient.subscribe(topicName, subscriberName, conf);
+ Consumer<byte[]> consumer1 = pulsarClient.newConsumer().topic(topicName).subscriptionName(subscriberName)
+ .receiverQueueSize(receiverQueueSize).subscriptionType(SubscriptionType.Shared).subscribe();
- ProducerConfiguration producerConf = new ProducerConfiguration();
-
- Producer producer = pulsarClient.createProducer("persistent://my-property/use/my-ns/unacked-topic",
- producerConf);
+ Producer<byte[]> producer = pulsarClient.newProducer()
+ .topic("persistent://my-property/use/my-ns/unacked-topic").create();
// (1) Produced Messages
for (int i = 0; i < totalProducedMsgs; i++) {
@@ -333,8 +324,8 @@ public class DispatcherBlockConsumerTest extends ProducerConsumerBase {
}
// (2) try to consume messages: but will be able to consume number of messages = unackMsgAllowed
- Message msg = null;
- Map<Message, Consumer> messages = Maps.newHashMap();
+ Message<?> msg = null;
+ Map<Message<?>, Consumer<?>> messages = Maps.newHashMap();
for (int i = 0; i < totalProducedMsgs; i++) {
msg = consumer1.receive(500, TimeUnit.MILLISECONDS);
if (msg != null) {
@@ -351,8 +342,9 @@ public class DispatcherBlockConsumerTest extends ProducerConsumerBase {
// close consumer1: all messages of consumer1 must be replayed and received by consumer2
consumer1.close();
// create consumer2
- Consumer consumer2 = pulsarClient.subscribe(topicName, subscriberName, conf);
- Map<Message, Consumer> messages2 = Maps.newHashMap();
+ Consumer<byte[]> consumer2 = pulsarClient.newConsumer().topic(topicName).subscriptionName(subscriberName)
+ .receiverQueueSize(receiverQueueSize).subscriptionType(SubscriptionType.Shared).subscribe();
+ Map<Message<?>, Consumer<?>> messages2 = Maps.newHashMap();
// try to consume remaining messages: broker may take time to deliver so, retry multiple time to consume
// all messages
for (int retry = 0; retry < 5; retry++) {
@@ -390,7 +382,7 @@ public class DispatcherBlockConsumerTest extends ProducerConsumerBase {
*
* @throws Exception
*/
- @Test(timeOut=10000)
+ @Test(timeOut = 10000)
public void testRedeliveryOnBlockedDistpatcher() throws Exception {
log.info("-- Starting {} test --", methodName);
@@ -405,18 +397,16 @@ public class DispatcherBlockConsumerTest extends ProducerConsumerBase {
final String subscriberName = "subscriber-1";
pulsar.getConfiguration().setMaxUnackedMessagesPerSubscription(unackMsgAllowed);
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setSubscriptionType(SubscriptionType.Shared);
- conf.setReceiverQueueSize(receiverQueueSize);
- ConsumerImpl consumer1 = (ConsumerImpl) pulsarClient.subscribe(topicName, subscriberName, conf);
- ConsumerImpl consumer2 = (ConsumerImpl) pulsarClient.subscribe(topicName, subscriberName, conf);
- ConsumerImpl consumer3 = (ConsumerImpl) pulsarClient.subscribe(topicName, subscriberName, conf);
- List<ConsumerImpl<byte[]>> consumers = Lists.newArrayList( consumer1, consumer2, consumer3 );
+ ConsumerBuilder<byte[]> consumerBuilder = pulsarClient.newConsumer().topic(topicName)
+ .subscriptionName(subscriberName).receiverQueueSize(receiverQueueSize)
+ .subscriptionType(SubscriptionType.Shared);
+ ConsumerImpl<byte[]> consumer1 = (ConsumerImpl<byte[]>) consumerBuilder.subscribe();
+ ConsumerImpl<byte[]> consumer2 = (ConsumerImpl<byte[]>) consumerBuilder.subscribe();
+ ConsumerImpl<byte[]> consumer3 = (ConsumerImpl<byte[]>) consumerBuilder.subscribe();
+ List<ConsumerImpl<?>> consumers = Lists.newArrayList(consumer1, consumer2, consumer3);
- ProducerConfiguration producerConf = new ProducerConfiguration();
-
- Producer producer = pulsarClient.createProducer("persistent://my-property/use/my-ns/unacked-topic",
- producerConf);
+ Producer<byte[]> producer = pulsarClient.newProducer()
+ .topic("persistent://my-property/use/my-ns/unacked-topic").create();
// (1) Produced Messages
for (int i = 0; i < totalProducedMsgs; i++) {
@@ -425,7 +415,7 @@ public class DispatcherBlockConsumerTest extends ProducerConsumerBase {
}
// (2) try to consume messages: but will be able to consume number of messages = unackMsgAllowed
- Message msg = null;
+ Message<?> msg = null;
Set<MessageId> messages = Sets.newHashSet();
for (int i = 0; i < 3; i++) {
for (int j = 0; j < totalProducedMsgs; j++) {
@@ -452,7 +442,7 @@ public class DispatcherBlockConsumerTest extends ProducerConsumerBase {
Thread.sleep(1000);
// now, broker must have redelivered all unacked messages
- Map<ConsumerImpl, Set<MessageId>> messages1 = Maps.newHashMap();
+ Map<ConsumerImpl<?>, Set<MessageId>> messages1 = Maps.newHashMap();
for (int i = 0; i < 3; i++) {
for (int j = 0; j < totalProducedMsgs; j++) {
msg = consumers.get(i).receive(500, TimeUnit.MILLISECONDS);
@@ -541,9 +531,8 @@ public class DispatcherBlockConsumerTest extends ProducerConsumerBase {
stopBroker();
startBroker();
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setSubscriptionType(SubscriptionType.Shared);
- Consumer consumer = pulsarClient.subscribe(topicName, subName, conf);
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topicName).subscriptionName(subName)
+ .subscriptionType(SubscriptionType.Shared).subscribe();
Thread.sleep(timeWaitToSync);
PersistentTopic topicRef = (PersistentTopic) pulsar.getBrokerService().getTopicReference(topicName);
@@ -558,7 +547,7 @@ public class DispatcherBlockConsumerTest extends ProducerConsumerBase {
assertEquals(subStats.msgBacklog, 0);
assertEquals(subStats.consumers.size(), 1);
- Producer producer = pulsarClient.createProducer(topicName);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName).create();
Thread.sleep(timeWaitToSync);
for (int i = 0; i < 100; i++) {
@@ -607,14 +596,11 @@ public class DispatcherBlockConsumerTest extends ProducerConsumerBase {
final String subscriberName = "subscriber-1";
final int totalProducedMsgs = 500;
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setSubscriptionType(SubscriptionType.Shared);
- Consumer consumer = pulsarClient.subscribe(topicName, subscriberName, conf);
-
- ProducerConfiguration producerConf = new ProducerConfiguration();
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topicName).subscriptionName(subscriberName)
+ .subscriptionType(SubscriptionType.Shared).subscribe();
- Producer producer = pulsarClient.createProducer("persistent://my-property/use/my-ns/unacked-topic",
- producerConf);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic("persistent://my-property/use/my-ns/unacked-topic")
+ .create();
CountDownLatch latch = new CountDownLatch(totalProducedMsgs);
// (1) Produced Messages
@@ -627,7 +613,7 @@ public class DispatcherBlockConsumerTest extends ProducerConsumerBase {
Set<Integer> unackMessages = Sets.newHashSet(5, 10, 20, 21, 22, 23, 25, 26, 30, 32, 40, 80, 160, 320);
int receivedMsgCount = 0;
for (int i = 0; i < totalProducedMsgs; i++) {
- Message msg = consumer.receive(500, TimeUnit.MILLISECONDS);
+ Message<?> msg = consumer.receive(500, TimeUnit.MILLISECONDS);
if (!unackMessages.contains(i)) {
consumer.acknowledge(msg);
}
@@ -646,13 +632,14 @@ public class DispatcherBlockConsumerTest extends ProducerConsumerBase {
// start broker which will recover topic-cursor from the ledger
startBroker();
- consumer = pulsarClient.subscribe(topicName, subscriberName, conf);
+ consumer = pulsarClient.newConsumer().topic(topicName).subscriptionName(subscriberName)
+ .subscriptionType(SubscriptionType.Shared).subscribe();
// consumer should only receive unakced messages
Set<String> unackMsgs = unackMessages.stream().map(i -> "my-message-" + i).collect(Collectors.toSet());
Set<String> receivedMsgs = Sets.newHashSet();
for (int i = 0; i < totalProducedMsgs; i++) {
- Message msg = consumer.receive(500, TimeUnit.MILLISECONDS);
+ Message<?> msg = consumer.receive(500, TimeUnit.MILLISECONDS);
if (msg == null) {
break;
}
@@ -667,18 +654,14 @@ public class DispatcherBlockConsumerTest extends ProducerConsumerBase {
* verifies perBroker dispatching blocking. A. maxUnAckPerBroker = 200, maxUnAckPerDispatcher = 20 Now, it tests
* with 3 subscriptions.
*
- * 1. Subscription-1: try to consume without acking
- * a. consumer will be blocked after 200 (maxUnAckPerBroker) msgs
- * b. even second consumer will not receive any new messages
- * c. broker will have 1 blocked dispatcher
- * 2. Subscription-2: try to consume without acking
- * a. as broker is already blocked it will block subscription after 20 msgs (maxUnAckPerDispatcher)
- * b. broker will have 2 blocked dispatchers
- * 3. Subscription-3: try to consume with acking
- * a. as consumer is acking not reached maxUnAckPerDispatcher=20 unack msg => consumes all produced msgs
- * 4.Subscription-1 : acks all pending msgs and consume by acking
- * a. broker unblocks all dispatcher and sub-1 consumes all messages
- * 5. Subscription-2 : it triggers redelivery and acks all messages so, it consumes all produced messages
+ * 1. Subscription-1: try to consume without acking a. consumer will be blocked after 200 (maxUnAckPerBroker) msgs
+ * b. even second consumer will not receive any new messages c. broker will have 1 blocked dispatcher 2.
+ * Subscription-2: try to consume without acking a. as broker is already blocked it will block subscription after 20
+ * msgs (maxUnAckPerDispatcher) b. broker will have 2 blocked dispatchers 3. Subscription-3: try to consume with
+ * acking a. as consumer is acking not reached maxUnAckPerDispatcher=20 unack msg => consumes all produced msgs
+ * 4.Subscription-1 : acks all pending msgs and consume by acking a. broker unblocks all dispatcher and sub-1
+ * consumes all messages 5. Subscription-2 : it triggers redelivery and acks all messages so, it consumes all
+ * produced messages
* </pre>
*
* @throws Exception
@@ -705,6 +688,7 @@ public class DispatcherBlockConsumerTest extends ProducerConsumerBase {
Field field = BrokerService.class.getDeclaredField("blockedDispatchers");
field.setAccessible(true);
+ @SuppressWarnings("unchecked")
ConcurrentOpenHashSet<PersistentDispatcherMultipleConsumers> blockedDispatchers = (ConcurrentOpenHashSet<PersistentDispatcherMultipleConsumers>) field
.get(pulsar.getBrokerService());
@@ -715,18 +699,21 @@ public class DispatcherBlockConsumerTest extends ProducerConsumerBase {
final String subscriberName2 = "subscriber-2";
final String subscriberName3 = "subscriber-3";
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setSubscriptionType(SubscriptionType.Shared);
- conf.setReceiverQueueSize(receiverQueueSize);
- ConsumerImpl consumer1Sub1 = (ConsumerImpl) pulsarClient.subscribe(topicName, subscriberName1, conf);
+ ConsumerImpl<byte[]> consumer1Sub1 = (ConsumerImpl<byte[]>) pulsarClient.newConsumer().topic(topicName)
+ .subscriptionName(subscriberName1).receiverQueueSize(receiverQueueSize)
+ .subscriptionType(SubscriptionType.Shared).subscribe();
// create subscription-2 and 3
- ConsumerImpl consumer1Sub2 = (ConsumerImpl) pulsarClient.subscribe(topicName, subscriberName2, conf);
+ ConsumerImpl<byte[]> consumer1Sub2 = (ConsumerImpl<byte[]>) pulsarClient.newConsumer().topic(topicName)
+ .subscriptionName(subscriberName2).receiverQueueSize(receiverQueueSize)
+ .subscriptionType(SubscriptionType.Shared).subscribe();
consumer1Sub2.close();
- ConsumerImpl consumer1Sub3 = (ConsumerImpl) pulsarClient.subscribe(topicName, subscriberName3, conf);
+ ConsumerImpl<byte[]> consumer1Sub3 = (ConsumerImpl<byte[]>) pulsarClient.newConsumer().topic(topicName)
+ .subscriptionName(subscriberName3).receiverQueueSize(receiverQueueSize)
+ .subscriptionType(SubscriptionType.Shared).subscribe();
consumer1Sub3.close();
- Producer producer = pulsarClient.createProducer("persistent://my-property/use/my-ns/unacked-topic",
- new ProducerConfiguration());
+ Producer<byte[]> producer = pulsarClient.newProducer()
+ .topic("persistent://my-property/use/my-ns/unacked-topic").create();
// continuously checks unack-message dispatching
ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);
@@ -742,7 +729,7 @@ public class DispatcherBlockConsumerTest extends ProducerConsumerBase {
* (1) try to consume messages: without acking messages and dispatcher will be blocked once it reaches
* maxUnAckPerBroker limit
***/
- Message msg = null;
+ Message<byte[]> msg = null;
Set<MessageId> messages1 = Sets.newHashSet();
for (int j = 0; j < totalProducedMsgs; j++) {
msg = consumer1Sub1.receive(100, TimeUnit.MILLISECONDS);
@@ -760,7 +747,9 @@ public class DispatcherBlockConsumerTest extends ProducerConsumerBase {
// client must receive number of messages = maxUnAckPerbroker rather all produced messages
assertNotEquals(messages1.size(), totalProducedMsgs);
// (1.b) consumer2 with same sub should not receive any more messages as subscription is blocked
- ConsumerImpl consumer2Sub1 = (ConsumerImpl) pulsarClient.subscribe(topicName, subscriberName1, conf);
+ ConsumerImpl<byte[]> consumer2Sub1 = (ConsumerImpl<byte[]>) pulsarClient.newConsumer().topic(topicName)
+ .subscriptionName(subscriberName1).receiverQueueSize(receiverQueueSize)
+ .subscriptionType(SubscriptionType.Shared).subscribe();
int consumer2Msgs = 0;
for (int j = 0; j < totalProducedMsgs; j++) {
msg = consumer2Sub1.receive(100, TimeUnit.MILLISECONDS);
@@ -783,7 +772,9 @@ public class DispatcherBlockConsumerTest extends ProducerConsumerBase {
* (2) However, other subscription2 should still be able to consume messages until it reaches to
* maxUnAckPerDispatcher limit
**/
- ConsumerImpl<byte[]> consumerSub2 = (ConsumerImpl) pulsarClient.subscribe(topicName, subscriberName2, conf);
+ ConsumerImpl<byte[]> consumerSub2 = (ConsumerImpl<byte[]>) pulsarClient.newConsumer().topic(topicName)
+ .subscriptionName(subscriberName2).receiverQueueSize(receiverQueueSize)
+ .subscriptionType(SubscriptionType.Shared).subscribe();
Set<MessageId> messages2 = Sets.newHashSet();
for (int j = 0; j < totalProducedMsgs; j++) {
msg = consumerSub2.receive(100, TimeUnit.MILLISECONDS);
@@ -798,7 +789,9 @@ public class DispatcherBlockConsumerTest extends ProducerConsumerBase {
assertEquals(blockedDispatchers.size(), 2);
/** (3) if Subscription3 is acking then it shouldn't be blocked **/
- consumer1Sub3 = (ConsumerImpl) pulsarClient.subscribe(topicName, subscriberName3, conf);
+ consumer1Sub3 = (ConsumerImpl<byte[]>) pulsarClient.newConsumer().topic(topicName)
+ .subscriptionName(subscriberName3).receiverQueueSize(receiverQueueSize)
+ .subscriptionType(SubscriptionType.Shared).subscribe();
int consumedMsgsSub3 = 0;
for (int j = 0; j < totalProducedMsgs; j++) {
msg = consumer1Sub3.receive(100, TimeUnit.MILLISECONDS);
@@ -872,6 +865,7 @@ public class DispatcherBlockConsumerTest extends ProducerConsumerBase {
* </pre>
*
*/
+ @SuppressWarnings("unchecked")
@Test
public void testBrokerDispatchBlockAndSubAckBackRequiredMsgs() {
@@ -904,12 +898,13 @@ public class DispatcherBlockConsumerTest extends ProducerConsumerBase {
final String subscriberName1 = "subscriber-1";
final String subscriberName2 = "subscriber-2";
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setSubscriptionType(SubscriptionType.Shared);
- conf.setReceiverQueueSize(receiverQueueSize);
- ConsumerImpl consumer1Sub1 = (ConsumerImpl) pulsarClient.subscribe(topicName, subscriberName1, conf);
+ ConsumerImpl<byte[]> consumer1Sub1 = (ConsumerImpl<byte[]>) pulsarClient.newConsumer().topic(topicName)
+ .subscriptionName(subscriberName1).receiverQueueSize(receiverQueueSize)
+ .subscriptionType(SubscriptionType.Shared).subscribe();
// create subscription-2 and 3
- ConsumerImpl consumer1Sub2 = (ConsumerImpl) pulsarClient.subscribe(topicName, subscriberName2, conf);
+ ConsumerImpl<byte[]> consumer1Sub2 = (ConsumerImpl<byte[]>) pulsarClient.newConsumer().topic(topicName)
+ .subscriptionName(subscriberName2).receiverQueueSize(receiverQueueSize)
+ .subscriptionType(SubscriptionType.Shared).subscribe();
consumer1Sub2.close();
// continuously checks unack-message dispatching
@@ -917,8 +912,8 @@ public class DispatcherBlockConsumerTest extends ProducerConsumerBase {
executor.scheduleAtFixedRate(() -> pulsar.getBrokerService().checkUnAckMessageDispatching(), 10, 10,
TimeUnit.MILLISECONDS);
- Producer producer = pulsarClient.createProducer("persistent://my-property/use/my-ns/unacked-topic",
- new ProducerConfiguration());
+ Producer<byte[]> producer = pulsarClient.newProducer()
+ .topic("persistent://my-property/use/my-ns/unacked-topic").create();
// Produced Messages
for (int i = 0; i < totalProducedMsgs; i++) {
@@ -930,7 +925,7 @@ public class DispatcherBlockConsumerTest extends ProducerConsumerBase {
* (1) try to consume messages: without acking messages and dispatcher will be blocked once it reaches
* maxUnAckPerBroker limit
***/
- Message msg = null;
+ Message<?> msg = null;
Set<MessageId> messages1 = Sets.newHashSet();
for (int j = 0; j < totalProducedMsgs; j++) {
msg = consumer1Sub1.receive(100, TimeUnit.MILLISECONDS);
@@ -948,7 +943,9 @@ public class DispatcherBlockConsumerTest extends ProducerConsumerBase {
// client must receive number of messages = maxUnAckPerbroker rather all produced messages
assertNotEquals(messages1.size(), totalProducedMsgs);
// (1.b) consumer2 with same sub should not receive any more messages as subscription is blocked
- ConsumerImpl consumer2Sub1 = (ConsumerImpl) pulsarClient.subscribe(topicName, subscriberName1, conf);
+ ConsumerImpl<byte[]> consumer2Sub1 = (ConsumerImpl<byte[]>) pulsarClient.newConsumer().topic(topicName)
+ .subscriptionName(subscriberName1).receiverQueueSize(receiverQueueSize)
+ .subscriptionType(SubscriptionType.Shared).subscribe();
int consumer2Msgs = 0;
for (int j = 0; j < totalProducedMsgs; j++) {
msg = consumer2Sub1.receive(100, TimeUnit.MILLISECONDS);
@@ -971,7 +968,9 @@ public class DispatcherBlockConsumerTest extends ProducerConsumerBase {
* (2) However, other subscription2 should still be able to consume messages until it reaches to
* maxUnAckPerDispatcher limit
**/
- consumer1Sub2 = (ConsumerImpl) pulsarClient.subscribe(topicName, subscriberName2, conf);
+ consumer1Sub2 = (ConsumerImpl<byte[]>) pulsarClient.newConsumer().topic(topicName)
+ .subscriptionName(subscriberName2).receiverQueueSize(receiverQueueSize)
+ .subscriptionType(SubscriptionType.Shared).subscribe();
Set<MessageId> messages2 = Sets.newHashSet();
for (int j = 0; j < totalProducedMsgs; j++) {
msg = consumer1Sub2.receive(100, TimeUnit.MILLISECONDS);
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/MessageDispatchThrottlingTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/MessageDispatchThrottlingTest.java
index 9163e0d..4425766 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/MessageDispatchThrottlingTest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/MessageDispatchThrottlingTest.java
@@ -107,7 +107,7 @@ public class MessageDispatchThrottlingTest extends ProducerConsumerBase {
admin.namespaces().createNamespace(namespace);
// create producer and topic
- Producer producer = pulsarClient.createProducer(topicName);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName).create();
PersistentTopic topic = (PersistentTopic) pulsar.getBrokerService().getTopic(topicName).get();
// (1) verify message-rate is -1 initially
Assert.assertEquals(topic.getDispatchRateLimiter().getDispatchRateOnMsg(), -1);
@@ -177,7 +177,7 @@ public class MessageDispatchThrottlingTest extends ProducerConsumerBase {
admin.namespaces().createNamespace(namespace);
admin.namespaces().setDispatchRate(namespace, dispatchRate);
// create producer and topic
- Producer producer = pulsarClient.createProducer(topicName);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName).create();
PersistentTopic topic = (PersistentTopic) pulsar.getBrokerService().getTopic(topicName).get();
boolean isMessageRateUpdate = false;
int retry = 5;
@@ -199,15 +199,13 @@ public class MessageDispatchThrottlingTest extends ProducerConsumerBase {
final AtomicInteger totalReceived = new AtomicInteger(0);
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setSubscriptionType(subscription);
- conf.setMessageListener((consumer, msg) -> {
- Assert.assertNotNull(msg, "Message cannot be null");
- String receivedMessage = new String(msg.getData());
- log.debug("Received message [{}] in the listener", receivedMessage);
- totalReceived.incrementAndGet();
- });
- Consumer consumer = pulsarClient.subscribe(topicName, "my-subscriber-name", conf);
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topicName).subscriptionName("my-subscriber-name")
+ .subscriptionType(subscription).messageListener((c1, msg) -> {
+ Assert.assertNotNull(msg, "Message cannot be null");
+ String receivedMessage = new String(msg.getData());
+ log.debug("Received message [{}] in the listener", receivedMessage);
+ totalReceived.incrementAndGet();
+ }).subscribe();
// deactive cursors
deactiveCursors((ManagedLedgerImpl) topic.getManagedLedger());
@@ -242,7 +240,8 @@ public class MessageDispatchThrottlingTest extends ProducerConsumerBase {
int initValue = pulsar.getConfiguration().getDispatchThrottlingRatePerTopicInMsg();
// (1) Update message-dispatch-rate limit
- admin.brokers().updateDynamicConfiguration("dispatchThrottlingRatePerTopicInMsg", Integer.toString(messageRate));
+ admin.brokers().updateDynamicConfiguration("dispatchThrottlingRatePerTopicInMsg",
+ Integer.toString(messageRate));
admin.brokers().updateDynamicConfiguration("dispatchThrottlingRatePerTopicInByte", Long.toString(byteRate));
// sleep incrementally as zk-watch notification is async and may take some time
for (int i = 0; i < 5; i++) {
@@ -254,21 +253,20 @@ public class MessageDispatchThrottlingTest extends ProducerConsumerBase {
admin.namespaces().createNamespace(namespace);
// create producer and topic
- Producer producer = pulsarClient.createProducer(topicName);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName).create();
PersistentTopic topic = (PersistentTopic) pulsar.getBrokerService().getTopic(topicName).get();
int numMessages = 500;
final AtomicInteger totalReceived = new AtomicInteger(0);
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setSubscriptionType(SubscriptionType.Shared);
- conf.setMessageListener((consumer, msg) -> {
- Assert.assertNotNull(msg, "Message cannot be null");
- String receivedMessage = new String(msg.getData());
- log.debug("Received message [{}] in the listener", receivedMessage);
- totalReceived.incrementAndGet();
- });
- Consumer consumer = pulsarClient.subscribe(topicName, "my-subscriber-name", conf);
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topicName).subscriptionName("my-subscriber-name")
+ .subscriptionType(SubscriptionType.Shared).messageListener((c1, msg) -> {
+ Assert.assertNotNull(msg, "Message cannot be null");
+ String receivedMessage = new String(msg.getData());
+ log.debug("Received message [{}] in the listener", receivedMessage);
+ totalReceived.incrementAndGet();
+ }).subscribe();
+
// deactive cursors
deactiveCursors((ManagedLedgerImpl) topic.getManagedLedger());
@@ -315,7 +313,7 @@ public class MessageDispatchThrottlingTest extends ProducerConsumerBase {
admin.namespaces().createNamespace(namespace);
admin.namespaces().setDispatchRate(namespace, dispatchRate);
// create producer and topic
- Producer producer = pulsarClient.createProducer(topicName);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName).create();
PersistentTopic topic = (PersistentTopic) pulsar.getBrokerService().getTopic(topicName).get();
boolean isMessageRateUpdate = false;
int retry = 5;
@@ -337,16 +335,14 @@ public class MessageDispatchThrottlingTest extends ProducerConsumerBase {
final AtomicInteger totalReceived = new AtomicInteger(0);
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setSubscriptionType(subscription);
- conf.setMessageListener((consumer, msg) -> {
- Assert.assertNotNull(msg, "Message cannot be null");
- String receivedMessage = new String(msg.getData());
- log.debug("Received message [{}] in the listener", receivedMessage);
- totalReceived.incrementAndGet();
- latch.countDown();
- });
- Consumer consumer = pulsarClient.subscribe(topicName, "my-subscriber-name", conf);
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topicName).subscriptionName("my-subscriber-name")
+ .subscriptionType(subscription).messageListener((c1, msg) -> {
+ Assert.assertNotNull(msg, "Message cannot be null");
+ String receivedMessage = new String(msg.getData());
+ log.debug("Received message [{}] in the listener", receivedMessage);
+ totalReceived.incrementAndGet();
+ latch.countDown();
+ }).subscribe();
// deactive cursors
deactiveCursors((ManagedLedgerImpl) topic.getManagedLedger());
@@ -388,7 +384,7 @@ public class MessageDispatchThrottlingTest extends ProducerConsumerBase {
admin.namespaces().createNamespace(namespace);
admin.namespaces().setDispatchRate(namespace, dispatchRate);
// create producer and topic
- Producer producer = pulsarClient.createProducer(topicName);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName).create();
PersistentTopic topic = (PersistentTopic) pulsar.getBrokerService().getTopic(topicName).get();
boolean isMessageRateUpdate = false;
int retry = 5;
@@ -410,16 +406,14 @@ public class MessageDispatchThrottlingTest extends ProducerConsumerBase {
final AtomicInteger totalReceived = new AtomicInteger(0);
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setSubscriptionType(subscription);
- conf.setMessageListener((consumer, msg) -> {
- Assert.assertNotNull(msg, "Message cannot be null");
- String receivedMessage = new String(msg.getData());
- log.debug("Received message [{}] in the listener", receivedMessage);
- totalReceived.incrementAndGet();
- latch.countDown();
- });
- Consumer consumer = pulsarClient.subscribe(topicName, "my-subscriber-name-" + subscription, conf);
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topicName).subscriptionName("my-subscriber-name")
+ .subscriptionType(subscription).messageListener((c1, msg) -> {
+ Assert.assertNotNull(msg, "Message cannot be null");
+ String receivedMessage = new String(msg.getData());
+ log.debug("Received message [{}] in the listener", receivedMessage);
+ totalReceived.incrementAndGet();
+ latch.countDown();
+ }).subscribe();
// deactive cursors
deactiveCursors((ManagedLedgerImpl) topic.getManagedLedger());
@@ -453,7 +447,7 @@ public class MessageDispatchThrottlingTest extends ProducerConsumerBase {
admin.namespaces().createNamespace(namespace);
admin.namespaces().setDispatchRate(namespace, dispatchRate);
// create producer and topic
- Producer producer = pulsarClient.createProducer(topicName);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName).create();
PersistentTopic topic = (PersistentTopic) pulsar.getBrokerService().getTopic(topicName).get();
boolean isMessageRateUpdate = false;
int retry = 5;
@@ -474,19 +468,19 @@ public class MessageDispatchThrottlingTest extends ProducerConsumerBase {
final AtomicInteger totalReceived = new AtomicInteger(0);
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setSubscriptionType(SubscriptionType.Shared);
- conf.setMessageListener((consumer, msg) -> {
- Assert.assertNotNull(msg, "Message cannot be null");
- String receivedMessage = new String(msg.getData());
- log.debug("Received message [{}] in the listener", receivedMessage);
- totalReceived.incrementAndGet();
- });
- Consumer consumer1 = pulsarClient.subscribe(topicName, "my-subscriber-name", conf);
- Consumer consumer2 = pulsarClient.subscribe(topicName, "my-subscriber-name", conf);
- Consumer consumer3 = pulsarClient.subscribe(topicName, "my-subscriber-name", conf);
- Consumer consumer4 = pulsarClient.subscribe(topicName, "my-subscriber-name", conf);
- Consumer consumer5 = pulsarClient.subscribe(topicName, "my-subscriber-name", conf);
+ ConsumerBuilder<byte[]> consumerBuilder = pulsarClient.newConsumer().topic(topicName)
+ .subscriptionName("my-subscriber-name").subscriptionType(SubscriptionType.Shared).messageListener((c1, msg) -> {
+ Assert.assertNotNull(msg, "Message cannot be null");
+ String receivedMessage = new String(msg.getData());
+ log.debug("Received message [{}] in the listener", receivedMessage);
+ totalReceived.incrementAndGet();
+ });
+ Consumer<byte[]> consumer1 = consumerBuilder.subscribe();
+ Consumer<byte[]> consumer2 = consumerBuilder.subscribe();
+ Consumer<byte[]> consumer3 = consumerBuilder.subscribe();
+ Consumer<byte[]> consumer4 = consumerBuilder.subscribe();
+ Consumer<byte[]> consumer5 = consumerBuilder.subscribe();
+
// deactive cursors
deactiveCursors((ManagedLedgerImpl) topic.getManagedLedger());
@@ -521,7 +515,8 @@ public class MessageDispatchThrottlingTest extends ProducerConsumerBase {
int initValue = pulsar.getConfiguration().getDispatchThrottlingRatePerTopicInMsg();
// (1) Update message-dispatch-rate limit
- admin.brokers().updateDynamicConfiguration("dispatchThrottlingRatePerTopicInMsg", Integer.toString(messageRate));
+ admin.brokers().updateDynamicConfiguration("dispatchThrottlingRatePerTopicInMsg",
+ Integer.toString(messageRate));
// sleep incrementally as zk-watch notification is async and may take some time
for (int i = 0; i < 5; i++) {
if (pulsar.getConfiguration().getDispatchThrottlingRatePerTopicInMsg() == initValue) {
@@ -532,21 +527,19 @@ public class MessageDispatchThrottlingTest extends ProducerConsumerBase {
admin.namespaces().createNamespace(namespace);
// create producer and topic
- Producer producer = pulsarClient.createProducer(topicName);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName).create();
PersistentTopic topic = (PersistentTopic) pulsar.getBrokerService().getTopic(topicName).get();
int numMessages = 500;
final AtomicInteger totalReceived = new AtomicInteger(0);
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setSubscriptionType(subscription);
- conf.setMessageListener((consumer, msg) -> {
- Assert.assertNotNull(msg, "Message cannot be null");
- String receivedMessage = new String(msg.getData());
- log.debug("Received message [{}] in the listener", receivedMessage);
- totalReceived.incrementAndGet();
- });
- Consumer consumer = pulsarClient.subscribe(topicName, "my-subscriber-name", conf);
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topicName).subscriptionName("my-subscriber-name")
+ .subscriptionType(subscription).messageListener((c1, msg) -> {
+ Assert.assertNotNull(msg, "Message cannot be null");
+ String receivedMessage = new String(msg.getData());
+ log.debug("Received message [{}] in the listener", receivedMessage);
+ totalReceived.incrementAndGet();
+ }).subscribe();
// deactive cursors
deactiveCursors((ManagedLedgerImpl) topic.getManagedLedger());
@@ -587,7 +580,7 @@ public class MessageDispatchThrottlingTest extends ProducerConsumerBase {
admin.namespaces().createNamespace(namespace);
admin.namespaces().setDispatchRate(namespace, dispatchRate);
// create producer and topic
- Producer producer = pulsarClient.createProducer(topicName);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName).create();
PersistentTopic topic = (PersistentTopic) pulsar.getBrokerService().getTopic(topicName).get();
boolean isMessageRateUpdate = false;
int retry = 5;
@@ -609,15 +602,14 @@ public class MessageDispatchThrottlingTest extends ProducerConsumerBase {
final AtomicInteger totalReceived = new AtomicInteger(0);
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setSubscriptionType(subscription);
- conf.setMessageListener((consumer, msg) -> {
- Assert.assertNotNull(msg, "Message cannot be null");
- String receivedMessage = new String(msg.getData());
- log.debug("Received message [{}] in the listener", receivedMessage);
- totalReceived.incrementAndGet();
- });
- Consumer consumer = pulsarClient.subscribe(topicName, "my-subscriber-name", conf);
+ ConsumerBuilder<byte[]> consumerBuilder = pulsarClient.newConsumer().topic(topicName)
+ .subscriptionName("my-subscriber-name").subscriptionType(subscription).messageListener((c1, msg) -> {
+ Assert.assertNotNull(msg, "Message cannot be null");
+ String receivedMessage = new String(msg.getData());
+ log.debug("Received message [{}] in the listener", receivedMessage);
+ totalReceived.incrementAndGet();
+ });
+ Consumer<byte[]> consumer = consumerBuilder.subscribe();
// deactive cursors
deactiveCursors((ManagedLedgerImpl) topic.getManagedLedger());
consumer.close();
@@ -629,7 +621,7 @@ public class MessageDispatchThrottlingTest extends ProducerConsumerBase {
producer.send(data);
}
- consumer = pulsarClient.subscribe(topicName, "my-subscriber-name", conf);
+ consumer = consumerBuilder.subscribe();
final int totalReceivedBytes = dataSize * totalReceived.get();
Assert.assertNotEquals(totalReceivedBytes, byteRate * 2);
@@ -646,6 +638,7 @@ public class MessageDispatchThrottlingTest extends ProducerConsumerBase {
* 3. applies dispatch rate
*
* </pre>
+ *
* @throws Exception
*/
@Test
@@ -655,7 +648,6 @@ public class MessageDispatchThrottlingTest extends ProducerConsumerBase {
final String namespace = "my-property/global/throttling_ns";
final String topicName = "persistent://" + namespace + "/throttlingBlock";
-
final int messageRate = 5;
DispatchRate dispatchRate = new DispatchRate(messageRate, -1, 360);
@@ -665,7 +657,7 @@ public class MessageDispatchThrottlingTest extends ProducerConsumerBase {
admin.namespaces().setDispatchRate(namespace, dispatchRate);
// create producer and topic
- Producer producer = pulsarClient.createProducer(topicName);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName).create();
PersistentTopic topic = (PersistentTopic) pulsar.getBrokerService().getTopic(topicName).get();
boolean isMessageRateUpdate = false;
int retry = 5;
@@ -687,15 +679,13 @@ public class MessageDispatchThrottlingTest extends ProducerConsumerBase {
final AtomicInteger totalReceived = new AtomicInteger(0);
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setSubscriptionType(SubscriptionType.Shared);
- conf.setMessageListener((consumer, msg) -> {
- Assert.assertNotNull(msg, "Message cannot be null");
- String receivedMessage = new String(msg.getData());
- log.debug("Received message [{}] in the listener", receivedMessage);
- totalReceived.incrementAndGet();
- });
- Consumer consumer = pulsarClient.subscribe(topicName, "my-subscriber-name", conf);
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topicName).subscriptionName("my-subscriber-name")
+ .subscriptionType(SubscriptionType.Shared).messageListener((c1, msg) -> {
+ Assert.assertNotNull(msg, "Message cannot be null");
+ String receivedMessage = new String(msg.getData());
+ log.debug("Received message [{}] in the listener", receivedMessage);
+ totalReceived.incrementAndGet();
+ }).subscribe();
// deactive cursors
deactiveCursors((ManagedLedgerImpl) topic.getManagedLedger());
@@ -736,7 +726,7 @@ public class MessageDispatchThrottlingTest extends ProducerConsumerBase {
admin.brokers().updateDynamicConfiguration("dispatchThrottlingOnNonBacklogConsumerEnabled",
Boolean.TRUE.toString());
// create producer and topic
- Producer producer = pulsarClient.createProducer(topicName);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName).create();
PersistentTopic topic = (PersistentTopic) pulsar.getBrokerService().getTopic(topicName).get();
boolean isUpdated = false;
int retry = 5;
@@ -760,15 +750,13 @@ public class MessageDispatchThrottlingTest extends ProducerConsumerBase {
final AtomicInteger totalReceived = new AtomicInteger(0);
- ConsumerConfiguration consumerConf = new ConsumerConfiguration();
- consumerConf.setSubscriptionType(subscription);
- consumerConf.setMessageListener((consumer, msg) -> {
- Assert.assertNotNull(msg, "Message cannot be null");
- String receivedMessage = new String(msg.getData());
- log.debug("Received message [{}] in the listener", receivedMessage);
- totalReceived.incrementAndGet();
- });
- Consumer consumer = pulsarClient.subscribe(topicName, "my-subscriber-name", consumerConf);
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topicName).subscriptionName("my-subscriber-name")
+ .subscriptionType(subscription).messageListener((c1, msg) -> {
+ Assert.assertNotNull(msg, "Message cannot be null");
+ String receivedMessage = new String(msg.getData());
+ log.debug("Received message [{}] in the listener", receivedMessage);
+ totalReceived.incrementAndGet();
+ }).subscribe();
// Asynchronously produce messages
for (int i = 0; i < numMessages; i++) {
@@ -785,7 +773,7 @@ public class MessageDispatchThrottlingTest extends ProducerConsumerBase {
log.info("-- Exiting {} test --", methodName);
}
- /**
+ /**
* <pre>
* It verifies that cluster-throttling value gets considered when namespace-policy throttling is disabled.
*
@@ -821,7 +809,7 @@ public class MessageDispatchThrottlingTest extends ProducerConsumerBase {
admin.namespaces().createNamespace(namespace);
// create producer and topic
- Producer producer = pulsarClient.createProducer(topicName1);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName1).create();
PersistentTopic topic = (PersistentTopic) pulsar.getBrokerService().getTopic(topicName1).get();
// (1) Update dispatch rate on cluster-config update
@@ -849,7 +837,7 @@ public class MessageDispatchThrottlingTest extends ProducerConsumerBase {
Assert.assertEquals(clusterMessageRate, topic.getDispatchRateLimiter().getDispatchRateOnMsg());
// (5) Namespace throttling is disabled so, new topic should take cluster throttling limit
- Producer producer2 = pulsarClient.createProducer(topicName2);
+ Producer<byte[]> producer2 = pulsarClient.newProducer().topic(topicName2).create();
PersistentTopic topic2 = (PersistentTopic) pulsar.getBrokerService().getTopic(topicName2).get();
Assert.assertEquals(clusterMessageRate, topic2.getDispatchRateLimiter().getDispatchRateOnMsg());
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/MockBrokerService.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/MockBrokerService.java
index 13c1146..bdc8e32 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/MockBrokerService.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/MockBrokerService.java
@@ -244,7 +244,6 @@ public class MockBrokerService {
EventLoopGroup workerGroup;
private final int webServicePort;
- private final int webServicePortTls;
private final int brokerServicePort;
private final int brokerServicePortTls;
@@ -268,7 +267,6 @@ public class MockBrokerService {
public MockBrokerService(int webServicePort, int webServicePortTls, int brokerServicePort,
int brokerServicePortTls) {
this.webServicePort = webServicePort;
- this.webServicePortTls = webServicePortTls;
this.brokerServicePort = brokerServicePort;
this.brokerServicePortTls = brokerServicePortTls;
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/NonPersistentTopicTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/NonPersistentTopicTest.java
index fefe8e7..41dfb7c 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/NonPersistentTopicTest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/NonPersistentTopicTest.java
@@ -104,14 +104,10 @@ public class NonPersistentTopicTest extends ProducerConsumerBase {
log.info("-- Starting {} test --", methodName);
final String topic = "non-persistent://my-property/use/my-ns/unacked-topic";
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setSubscriptionType(type);
+ ConsumerImpl<byte[]> consumer = (ConsumerImpl<byte[]>) pulsarClient.newConsumer().topic(topic)
+ .subscriptionName("subscriber-1").subscriptionType(type).subscribe();
- ProducerConfiguration producerConf = new ProducerConfiguration();
-
- ConsumerImpl consumer = (ConsumerImpl) pulsarClient.subscribe(topic, "subscriber-1", conf);
-
- Producer producer = pulsarClient.createProducer(topic, producerConf);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topic).create();
int totalProduceMsg = 500;
for (int i = 0; i < totalProduceMsg; i++) {
@@ -120,7 +116,7 @@ public class NonPersistentTopicTest extends ProducerConsumerBase {
Thread.sleep(10);
}
- Message msg = null;
+ Message<?> msg = null;
Set<String> messageSet = Sets.newHashSet();
for (int i = 0; i < totalProduceMsg; i++) {
msg = consumer.receive(1, TimeUnit.SECONDS);
@@ -148,14 +144,10 @@ public class NonPersistentTopicTest extends ProducerConsumerBase {
final String topic = "non-persistent://my-property/use/my-ns/partitioned-topic";
admin.nonPersistentTopics().createPartitionedTopic(topic, 5);
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setSubscriptionType(type);
-
- ProducerConfiguration producerConf = new ProducerConfiguration();
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topic).subscriptionName("subscriber-1")
+ .subscriptionType(type).subscribe();
- Consumer consumer = pulsarClient.subscribe(topic, "subscriber-1", conf);
-
- Producer producer = pulsarClient.createProducer(topic, producerConf);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topic).create();
int totalProduceMsg = 500;
for (int i = 0; i < totalProduceMsg; i++) {
@@ -164,7 +156,7 @@ public class NonPersistentTopicTest extends ProducerConsumerBase {
Thread.sleep(10);
}
- Message msg = null;
+ Message<?> msg = null;
Set<String> messageSet = Sets.newHashSet();
for (int i = 0; i < totalProduceMsg; i++) {
msg = consumer.receive(1, TimeUnit.SECONDS);
@@ -196,10 +188,10 @@ public class NonPersistentTopicTest extends ProducerConsumerBase {
PulsarClient client = PulsarClient.builder().serviceUrl("pulsar://localhost:" + BROKER_PORT)
.statsInterval(0, TimeUnit.SECONDS).build();
- Consumer consumer = client.newConsumer().topic(topic).subscriptionName("subscriber-1").subscriptionType(type)
- .subscribe();
+ Consumer<byte[]> consumer = client.newConsumer().topic(topic).subscriptionName("subscriber-1")
+ .subscriptionType(type).subscribe();
- Producer producer = client.newProducer().topic(topic).create();
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topic).create();
// Ensure all partitions exist
for (int i = 0; i < numPartitions; i++) {
@@ -214,7 +206,7 @@ public class NonPersistentTopicTest extends ProducerConsumerBase {
Thread.sleep(10);
}
- Message msg = null;
+ Message<?> msg = null;
Set<String> messageSet = Sets.newHashSet();
for (int i = 0; i < totalProduceMsg; i++) {
msg = consumer.receive(1, TimeUnit.SECONDS);
@@ -237,8 +229,7 @@ public class NonPersistentTopicTest extends ProducerConsumerBase {
}
/**
- * It verifies that broker doesn't dispatch messages if consumer runs out of permits
- * filled out with messages
+ * It verifies that broker doesn't dispatch messages if consumer runs out of permits filled out with messages
*/
@Test(dataProvider = "subscriptionType")
public void testConsumerInternalQueueMaxOut(SubscriptionType type) throws Exception {
@@ -246,15 +237,10 @@ public class NonPersistentTopicTest extends ProducerConsumerBase {
final String topic = "non-persistent://my-property/use/my-ns/unacked-topic";
final int queueSize = 10;
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setSubscriptionType(type);
- conf.setReceiverQueueSize(queueSize);
-
- ProducerConfiguration producerConf = new ProducerConfiguration();
-
- ConsumerImpl consumer = (ConsumerImpl) pulsarClient.subscribe(topic, "subscriber-1", conf);
+ ConsumerImpl<byte[]> consumer = (ConsumerImpl<byte[]>) pulsarClient.newConsumer().topic(topic)
+ .receiverQueueSize(queueSize).subscriptionName("subscriber-1").subscriptionType(type).subscribe();
- Producer producer = pulsarClient.createProducer(topic, producerConf);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topic).create();
int totalProduceMsg = 50;
for (int i = 0; i < totalProduceMsg; i++) {
@@ -263,7 +249,7 @@ public class NonPersistentTopicTest extends ProducerConsumerBase {
Thread.sleep(10);
}
- Message msg = null;
+ Message<?> msg = null;
Set<String> messageSet = Sets.newHashSet();
for (int i = 0; i < totalProduceMsg; i++) {
msg = consumer.receive(1, TimeUnit.SECONDS);
@@ -300,9 +286,9 @@ public class NonPersistentTopicTest extends ProducerConsumerBase {
// produce message concurrently
ExecutorService executor = Executors.newFixedThreadPool(5);
AtomicBoolean failed = new AtomicBoolean(false);
- ProducerConfiguration producerConf = new ProducerConfiguration();
- Consumer consumer = pulsarClient.subscribe(topic, "subscriber-1");
- Producer producer = pulsarClient.createProducer(topic, producerConf);
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topic).subscriptionName("subscriber-1")
+ .subscribe();
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topic).create();
byte[] msgData = "testData".getBytes();
final int totalProduceMessages = 10;
CountDownLatch latch = new CountDownLatch(totalProduceMessages);
@@ -319,7 +305,7 @@ public class NonPersistentTopicTest extends ProducerConsumerBase {
}
latch.await();
- Message msg = null;
+ Message<?> msg = null;
Set<String> messageSet = Sets.newHashSet();
for (int i = 0; i < totalProduceMessages; i++) {
msg = consumer.receive(500, TimeUnit.MILLISECONDS);
@@ -352,19 +338,19 @@ public class NonPersistentTopicTest extends ProducerConsumerBase {
log.info("-- Starting {} test --", methodName);
final String topic = "non-persistent://my-property/use/my-ns/unacked-topic";
- ConsumerConfiguration sharedConf = new ConsumerConfiguration();
- sharedConf.setSubscriptionType(SubscriptionType.Shared);
- ConsumerConfiguration excConf = new ConsumerConfiguration();
- excConf.setSubscriptionType(SubscriptionType.Failover);
+ ConsumerImpl<byte[]> consumer1Shared = (ConsumerImpl<byte[]>) pulsarClient.newConsumer().topic(topic)
+ .subscriptionName("subscriber-shared").subscriptionType(SubscriptionType.Shared).subscribe();
- ProducerConfiguration producerConf = new ProducerConfiguration();
+ ConsumerImpl<byte[]> consumer2Shared = (ConsumerImpl<byte[]>) pulsarClient.newConsumer().topic(topic)
+ .subscriptionName("subscriber-shared").subscriptionType(SubscriptionType.Shared).subscribe();
- ConsumerImpl consumer1Shared = (ConsumerImpl) pulsarClient.subscribe(topic, "subscriber-shared", sharedConf);
- ConsumerImpl consumer2Shared = (ConsumerImpl) pulsarClient.subscribe(topic, "subscriber-shared", sharedConf);
- ConsumerImpl consumer1FailOver = (ConsumerImpl) pulsarClient.subscribe(topic, "subscriber-fo", excConf);
- ConsumerImpl consumer2FailOver = (ConsumerImpl) pulsarClient.subscribe(topic, "subscriber-fo", excConf);
+ ConsumerImpl<byte[]> consumer1FailOver = (ConsumerImpl<byte[]>) pulsarClient.newConsumer().topic(topic)
+ .subscriptionName("subscriber-fo").subscriptionType(SubscriptionType.Failover).subscribe();
- Producer producer = pulsarClient.createProducer(topic, producerConf);
+ ConsumerImpl<byte[]> consumer2FailOver = (ConsumerImpl<byte[]>) pulsarClient.newConsumer().topic(topic)
+ .subscriptionName("subscriber-fo").subscriptionType(SubscriptionType.Failover).subscribe();
+
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topic).create();
int totalProduceMsg = 500;
for (int i = 0; i < totalProduceMsg; i++) {
@@ -374,7 +360,7 @@ public class NonPersistentTopicTest extends ProducerConsumerBase {
}
// consume from shared-subscriptions
- Message msg = null;
+ Message<?> msg = null;
Set<String> messageSet = Sets.newHashSet();
for (int i = 0; i < totalProduceMsg; i++) {
msg = consumer1Shared.receive(500, TimeUnit.MILLISECONDS);
@@ -436,9 +422,8 @@ public class NonPersistentTopicTest extends ProducerConsumerBase {
NonPersistentTopicStats stats;
SubscriptionStats subStats;
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setSubscriptionType(SubscriptionType.Shared);
- Consumer consumer = pulsarClient.subscribe(topicName, subName, conf);
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topicName)
+ .subscriptionType(SubscriptionType.Shared).subscriptionName(subName).subscribe();
Thread.sleep(timeWaitToSync);
NonPersistentTopic topicRef = (NonPersistentTopic) pulsar.getBrokerService().getTopicReference(topicName);
@@ -452,7 +437,7 @@ public class NonPersistentTopicTest extends ProducerConsumerBase {
assertEquals(stats.getSubscriptions().keySet().size(), 1);
assertEquals(subStats.consumers.size(), 1);
- Producer producer = pulsarClient.createProducer(topicName);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName).create();
Thread.sleep(timeWaitToSync);
int totalProducedMessages = 100;
@@ -494,21 +479,21 @@ public class NonPersistentTopicTest extends ProducerConsumerBase {
NonPersistentTopicStats stats;
SubscriptionStats subStats;
- TopicName dest = TopicName.get(globalTopicName);
+ PulsarClient client1 = PulsarClient.builder().serviceUrl(replication.url1.toString()).build();
+ PulsarClient client2 = PulsarClient.builder().serviceUrl(replication.url2.toString()).build();
+ PulsarClient client3 = PulsarClient.builder().serviceUrl(replication.url3.toString()).build();
+
+ ConsumerImpl<byte[]> consumer1 = (ConsumerImpl<byte[]>) client1.newConsumer().topic(globalTopicName)
+ .subscriptionName("subscriber-1").subscribe();
+ ConsumerImpl<byte[]> consumer2 = (ConsumerImpl<byte[]>) client1.newConsumer().topic(globalTopicName)
+ .subscriptionName("subscriber-2").subscribe();
- PulsarClient client1 = PulsarClient.create(replication.url1.toString(), new ClientConfiguration());
- PulsarClient client2 = PulsarClient.create(replication.url2.toString(), new ClientConfiguration());
- PulsarClient client3 = PulsarClient.create(replication.url3.toString(), new ClientConfiguration());
+ ConsumerImpl<byte[]> repl2Consumer = (ConsumerImpl<byte[]>) client2.newConsumer().topic(globalTopicName)
+ .subscriptionName("subscriber-1").subscribe();
+ ConsumerImpl<byte[]> repl3Consumer = (ConsumerImpl<byte[]>) client3.newConsumer().topic(globalTopicName)
+ .subscriptionName("subscriber-1").subscribe();
- ProducerConfiguration producerConf = new ProducerConfiguration();
- ConsumerConfiguration consumerConf = new ConsumerConfiguration();
- ConsumerImpl consumer1 = (ConsumerImpl) client1.subscribe(globalTopicName, "subscriber-1", consumerConf);
- ConsumerImpl consumer2 = (ConsumerImpl) client1.subscribe(globalTopicName, "subscriber-2", consumerConf);
- ConsumerImpl repl2Consumer = (ConsumerImpl) client2.subscribe(globalTopicName, "subscriber-1",
- consumerConf);
- ConsumerImpl repl3Consumer = (ConsumerImpl) client3.subscribe(globalTopicName, "subscriber-1",
- consumerConf);
- Producer producer = client1.createProducer(globalTopicName, producerConf);
+ Producer<byte[]> producer = client1.newProducer().topic(globalTopicName).create();
Thread.sleep(timeWaitToSync);
@@ -516,7 +501,7 @@ public class NonPersistentTopicTest extends ProducerConsumerBase {
// Replicator for r1 -> r2,r3
NonPersistentTopic topicRef = (NonPersistentTopic) replication.pulsar1.getBrokerService()
- .getTopicReference(dest.toString());
+ .getTopicReference(globalTopicName);
NonPersistentReplicator replicatorR2 = (NonPersistentReplicator) topicRef.getPersistentReplicator("r2");
NonPersistentReplicator replicatorR3 = (NonPersistentReplicator) topicRef.getPersistentReplicator("r3");
assertNotNull(topicRef);
@@ -540,7 +525,7 @@ public class NonPersistentTopicTest extends ProducerConsumerBase {
}
// (1) consume by consumer1
- Message msg = null;
+ Message<?> msg = null;
Set<String> messageSet = Sets.newHashSet();
for (int i = 0; i < totalProducedMessages; i++) {
msg = consumer1.receive(300, TimeUnit.MILLISECONDS);
@@ -623,6 +608,7 @@ public class NonPersistentTopicTest extends ProducerConsumerBase {
/**
* verifies load manager assigns topic only if broker started in non-persistent mode
+ *
* <pre>
* 1. Start broker with disable non-persistent topic mode
* 2. Create namespace with non-persistency set
@@ -647,6 +633,7 @@ public class NonPersistentTopicTest extends ProducerConsumerBase {
Field field = PulsarService.class.getDeclaredField("loadManager");
field.setAccessible(true);
+ @SuppressWarnings("unchecked")
AtomicReference<LoadManager> loadManagerRef = (AtomicReference<LoadManager>) field.get(pulsar);
LoadManager manager = LoadManager.create(pulsar);
manager.start();
@@ -662,9 +649,9 @@ public class NonPersistentTopicTest extends ProducerConsumerBase {
}
assertNull(broker);
- ProducerConfiguration producerConf = new ProducerConfiguration();
try {
- Producer producer = pulsarClient.createProducerAsync(topicName, producerConf).get(1, TimeUnit.SECONDS);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName).createAsync().get(1,
+ TimeUnit.SECONDS);
producer.close();
fail("topic loading should have failed");
} catch (Exception e) {
@@ -697,9 +684,9 @@ public class NonPersistentTopicTest extends ProducerConsumerBase {
conf.setEnableNonPersistentTopics(false);
stopBroker();
startBroker();
- ProducerConfiguration producerConf = new ProducerConfiguration();
try {
- Producer producer = pulsarClient.createProducerAsync(topicName, producerConf).get(1, TimeUnit.SECONDS);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName).createAsync().get(1,
+ TimeUnit.SECONDS);
producer.close();
fail("topic loading should have failed");
} catch (Exception e) {
@@ -736,6 +723,7 @@ public class NonPersistentTopicTest extends ProducerConsumerBase {
Field field = PulsarService.class.getDeclaredField("loadManager");
field.setAccessible(true);
+ @SuppressWarnings("unchecked")
AtomicReference<LoadManager> loadManagerRef = (AtomicReference<LoadManager>) field.get(pulsar);
LoadManager manager = LoadManager.create(pulsar);
manager.start();
@@ -751,9 +739,9 @@ public class NonPersistentTopicTest extends ProducerConsumerBase {
}
assertNull(broker);
- ProducerConfiguration producerConf = new ProducerConfiguration();
try {
- Producer producer = pulsarClient.createProducerAsync(topicName, producerConf).get(1, TimeUnit.SECONDS);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName).createAsync().get(1,
+ TimeUnit.SECONDS);
producer.close();
fail("topic loading should have failed");
} catch (Exception e) {
@@ -785,15 +773,13 @@ public class NonPersistentTopicTest extends ProducerConsumerBase {
conf.setMaxConcurrentNonPersistentMessagePerConnection(1);
stopBroker();
startBroker();
- ProducerConfiguration producerConf = new ProducerConfiguration();
- ConsumerConfiguration consumerConfig1 = new ConsumerConfiguration();
- consumerConfig1.setReceiverQueueSize(1);
- Consumer consumer = pulsarClient.subscribe(topicName, "subscriber-1", consumerConfig1);
- ConsumerConfiguration consumerConfig2 = new ConsumerConfiguration();
- consumerConfig2.setReceiverQueueSize(1);
- consumerConfig2.setSubscriptionType(SubscriptionType.Shared);
- Consumer consumer2 = pulsarClient.subscribe(topicName, "subscriber-2", consumerConfig2);
- ProducerImpl producer = (ProducerImpl) pulsarClient.createProducer(topicName, producerConf);
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topicName).subscriptionName("subscriber-1")
+ .receiverQueueSize(1).subscribe();
+
+ Consumer<byte[]> consumer2 = pulsarClient.newConsumer().topic(topicName).subscriptionName("subscriber-2")
+ .receiverQueueSize(1).subscriptionType(SubscriptionType.Shared).subscribe();
+
+ ProducerImpl<byte[]> producer = (ProducerImpl<byte[]>) pulsarClient.newProducer().topic(topicName).create();
String firstTimeConnected = producer.getConnectedSince();
ExecutorService executor = Executors.newFixedThreadPool(5);
byte[] msgData = "testData".getBytes();
@@ -801,7 +787,7 @@ public class NonPersistentTopicTest extends ProducerConsumerBase {
CountDownLatch latch = new CountDownLatch(totalProduceMessages);
for (int i = 0; i < totalProduceMessages; i++) {
executor.submit(() -> {
- producer.sendAsync(msgData).handle((msg,e)->{
+ producer.sendAsync(msgData).handle((msg, e) -> {
latch.countDown();
return null;
});
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/PartitionedProducerConsumerTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/PartitionedProducerConsumerTest.java
index 3be9edc..0708229 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/PartitionedProducerConsumerTest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/PartitionedProducerConsumerTest.java
@@ -25,20 +25,10 @@ import static org.testng.Assert.fail;
import java.util.Set;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.Executor;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
-import org.apache.pulsar.client.api.Consumer;
-import org.apache.pulsar.client.api.ConsumerConfiguration;
-import org.apache.pulsar.client.api.Message;
-import org.apache.pulsar.client.api.MessageBuilder;
-import org.apache.pulsar.client.api.Producer;
-import org.apache.pulsar.client.api.ProducerConfiguration;
-import org.apache.pulsar.client.api.PulsarClientException;
-import org.apache.pulsar.client.api.SubscriptionType;
-import org.apache.pulsar.client.api.ProducerConfiguration.MessageRoutingMode;
import org.apache.pulsar.client.impl.PartitionedProducerImpl;
import org.apache.pulsar.common.naming.TopicName;
import org.slf4j.Logger;
@@ -80,23 +70,20 @@ public class PartitionedProducerConsumerTest extends ProducerConsumerBase {
int numPartitions = 4;
TopicName topicName = TopicName.get("persistent://my-property/use/my-ns/my-partitionedtopic1");
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setSubscriptionType(SubscriptionType.Exclusive);
-
admin.persistentTopics().createPartitionedTopic(topicName.toString(), numPartitions);
- ProducerConfiguration producerConf = new ProducerConfiguration();
- producerConf.setMessageRoutingMode(MessageRoutingMode.RoundRobinPartition);
- Producer producer = pulsarClient.createProducer(topicName.toString(), producerConf);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName.toString())
+ .messageRoutingMode(MessageRoutingMode.RoundRobinPartition).create();
- Consumer consumer = pulsarClient.subscribe(topicName.toString(), "my-partitioned-subscriber", conf);
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topicName.toString())
+ .subscriptionName("my-partitioned-subscriber").subscribe();
for (int i = 0; i < 10; i++) {
String message = "my-message-" + i;
producer.send(message.getBytes());
}
- Message msg = null;
+ Message<byte[]> msg = null;
Set<String> messageSet = Sets.newHashSet();
for (int i = 0; i < 10; i++) {
msg = consumer.receive(5, TimeUnit.SECONDS);
@@ -121,13 +108,13 @@ public class PartitionedProducerConsumerTest extends ProducerConsumerBase {
int numPartitions = 4;
final String specialCharacter = "! * ' ( ) ; : @ & = + $ , /\\ ? % # [ ]";
- TopicName topicName = TopicName.get("persistent://my-property/use/my-ns/my-partitionedtopic1" + specialCharacter);
+ TopicName topicName = TopicName
+ .get("persistent://my-property/use/my-ns/my-partitionedtopic1" + specialCharacter);
admin.persistentTopics().createPartitionedTopic(topicName.toString(), numPartitions);
- ProducerConfiguration producerConf = new ProducerConfiguration();
- producerConf.setMessageRoutingMode(MessageRoutingMode.RoundRobinPartition);
// Try to create producer which does lookup and create connection with broker
- Producer producer = pulsarClient.createProducer(topicName.toString(), producerConf);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName.toString())
+ .messageRoutingMode(MessageRoutingMode.RoundRobinPartition).create();
producer.close();
admin.persistentTopics().deletePartitionedTopic(topicName.toString());
log.info("-- Exiting {} test --", methodName);
@@ -140,23 +127,20 @@ public class PartitionedProducerConsumerTest extends ProducerConsumerBase {
int numPartitions = 4;
TopicName topicName = TopicName.get("persistent://my-property/use/my-ns/my-partitionedtopic2");
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setSubscriptionType(SubscriptionType.Exclusive);
-
admin.persistentTopics().createPartitionedTopic(topicName.toString(), numPartitions);
- ProducerConfiguration producerConf = new ProducerConfiguration();
- producerConf.setMessageRoutingMode(MessageRoutingMode.SinglePartition);
- Producer producer = pulsarClient.createProducer(topicName.toString(), producerConf);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName.toString())
+ .messageRoutingMode(MessageRoutingMode.SinglePartition).create();
- Consumer consumer = pulsarClient.subscribe(topicName.toString(), "my-partitioned-subscriber", conf);
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topicName.toString())
+ .subscriptionName("my-partitioned-subscriber").subscribe();
for (int i = 0; i < 10; i++) {
String message = "my-message-" + i;
producer.send(message.getBytes());
}
- Message msg = null;
+ Message<byte[]> msg = null;
Set<String> messageSet = Sets.newHashSet();
for (int i = 0; i < 10; i++) {
@@ -186,15 +170,13 @@ public class PartitionedProducerConsumerTest extends ProducerConsumerBase {
String dummyKey1 = "dummykey1";
String dummyKey2 = "dummykey2";
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setSubscriptionType(SubscriptionType.Exclusive);
-
admin.persistentTopics().createPartitionedTopic(topicName.toString(), numPartitions);
- Producer producer = pulsarClient.createProducer(topicName.toString());
- Consumer consumer = pulsarClient.subscribe(topicName.toString(), "my-partitioned-subscriber", conf);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName.toString()).create();
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topicName.toString())
+ .subscriptionName("my-partitioned-subscriber").subscribe();
- Message msg = null;
+ Message<byte[]> msg = null;
for (int i = 0; i < 5; i++) {
String message = "my-message-" + i;
msg = MessageBuilder.create().setContent(message.getBytes()).setKey(dummyKey1).build();
@@ -242,13 +224,11 @@ public class PartitionedProducerConsumerTest extends ProducerConsumerBase {
TopicName topicName = TopicName.get("persistent://my-property/use/my-ns/my-partitionedtopic4");
admin.persistentTopics().createPartitionedTopic(topicName.toString(), numPartitions);
- ConsumerConfiguration consumerConf = new ConsumerConfiguration();
- consumerConf.setSubscriptionType(SubscriptionType.Exclusive);
-
- Consumer consumer = pulsarClient.subscribe(topicName.toString(), "my-subscriber-name", consumerConf);
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topicName.toString())
+ .subscriptionName("my-subscriber-name").subscribe();
try {
- Message msg = MessageBuilder.create().setContent("InvalidMessage".getBytes()).build();
+ Message<byte[]> msg = MessageBuilder.create().setContent("InvalidMessage".getBytes()).build();
consumer.acknowledge(msg);
} catch (PulsarClientException.InvalidMessageException e) {
// ok
@@ -270,7 +250,7 @@ public class PartitionedProducerConsumerTest extends ProducerConsumerBase {
// ok
}
- Producer producer = pulsarClient.createProducer(topicName.toString());
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName.toString()).create();
producer.close();
try {
@@ -291,47 +271,30 @@ public class PartitionedProducerConsumerTest extends ProducerConsumerBase {
TopicName topicName = TopicName.get("persistent://my-property/use/my-ns/my-partitionedtopic5");
admin.persistentTopics().createPartitionedTopic(topicName.toString(), numPartitions);
- ProducerConfiguration producerConf = new ProducerConfiguration();
- Producer producer = null;
- Consumer consumer = null;
+ Producer<byte[]> producer = null;
+ Consumer<byte[]> consumer = null;
try {
- producerConf.setMessageRouter(null);
+ pulsarClient.newProducer().messageRouter(null);
Assert.fail("should fail");
} catch (NullPointerException e) {
// ok
}
try {
- producerConf.setMessageRoutingMode(null);
+ pulsarClient.newProducer().messageRoutingMode(null);
Assert.fail("should fail");
} catch (NullPointerException e) {
// ok
}
try {
- producer = pulsarClient.createProducer(topicName.toString(), null);
- Assert.fail("should fail");
- } catch (PulsarClientException e) {
- Assert.assertTrue(e instanceof PulsarClientException.InvalidConfigurationException);
- }
-
- ConsumerConfiguration consumerConf = new ConsumerConfiguration();
-
- try {
- consumer = pulsarClient.subscribe(topicName.toString(), "my-subscriber-name", null);
- Assert.fail("Should fail");
- } catch (PulsarClientException e) {
- Assert.assertTrue(e instanceof PulsarClientException.InvalidConfigurationException);
- }
-
- try {
- producer = pulsarClient.createProducer(topicName.toString());
- consumer = pulsarClient.subscribe(topicName.toString(), "my-sub");
+ producer = pulsarClient.newProducer().topic(topicName.toString()).create();
+ consumer = pulsarClient.newConsumer().topic(topicName.toString()).subscriptionName("my-sub").subscribe();
producer.send("message1".getBytes());
producer.send("message2".getBytes());
- Message msg1 = consumer.receive();
- Message msg2 = consumer.receive();
+ /* Message<byte[]> msg1 = */ consumer.receive();
+ Message<byte[]> msg2 = consumer.receive();
consumer.acknowledgeCumulative(msg2);
Assert.fail("should fail since ack cumulative is not supported for partitioned topic");
} catch (PulsarClientException e) {
@@ -352,15 +315,16 @@ public class PartitionedProducerConsumerTest extends ProducerConsumerBase {
TopicName topicName = TopicName.get("persistent://my-property/use/my-ns/my-partitionedtopic6");
admin.persistentTopics().createPartitionedTopic(topicName.toString(), numPartitions);
- Producer producer = pulsarClient.createProducer(topicName.toString());
- Consumer consumer = pulsarClient.subscribe(topicName.toString(), "my-sub");
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName.toString()).create();
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topicName.toString()).subscriptionName("my-sub")
+ .subscribe();
consumer.unsubscribe();
consumer.close();
producer.close();
admin.persistentTopics().deletePartitionedTopic(topicName.toString());
- Producer producer1 = pulsarClient.createProducer(topicName.toString());
+ Producer<byte[]> producer1 = pulsarClient.newProducer().topic(topicName.toString()).create();
if (producer1 instanceof PartitionedProducerImpl) {
Assert.fail("should fail since partitioned topic was deleted");
}
@@ -377,16 +341,12 @@ public class PartitionedProducerConsumerTest extends ProducerConsumerBase {
int numPartitions = 4;
TopicName topicName = TopicName.get("persistent://my-property/use/my-ns/my-partitionedtopic1");
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setSubscriptionType(SubscriptionType.Shared);
-
admin.persistentTopics().createPartitionedTopic(topicName.toString(), numPartitions);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName.toString())
+ .messageRoutingMode(MessageRoutingMode.RoundRobinPartition).create();
- ProducerConfiguration producerConf = new ProducerConfiguration();
- producerConf.setMessageRoutingMode(MessageRoutingMode.RoundRobinPartition);
- Producer producer = pulsarClient.createProducer(topicName.toString(), producerConf);
-
- Consumer consumer = pulsarClient.subscribe(topicName.toString(), "my-partitioned-subscriber", conf);
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topicName.toString())
+ .subscriptionName("my-partitioned-subscriber").subscriptionType(SubscriptionType.Shared).subscribe();
// produce messages
for (int i = 0; i < totalMsg; i++) {
@@ -428,16 +388,13 @@ public class PartitionedProducerConsumerTest extends ProducerConsumerBase {
int numPartitions = 4;
TopicName topicName = TopicName.get("persistent://my-property/use/my-ns/my-partitionedtopic1");
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setReceiverQueueSize(1);
-
admin.persistentTopics().createPartitionedTopic(topicName.toString(), numPartitions);
- ProducerConfiguration producerConf = new ProducerConfiguration();
- producerConf.setMessageRoutingMode(MessageRoutingMode.RoundRobinPartition);
- Producer producer = pulsarClient.createProducer(topicName.toString(), producerConf);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName.toString())
+ .messageRoutingMode(MessageRoutingMode.RoundRobinPartition).create();
- Consumer consumer = pulsarClient.subscribe(topicName.toString(), "my-partitioned-subscriber", conf);
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topicName.toString())
+ .subscriptionName("my-partitioned-subscriber").receiverQueueSize(1).subscribe();
// produce messages
for (int i = 0; i < totalMsg; i++) {
@@ -483,17 +440,15 @@ public class PartitionedProducerConsumerTest extends ProducerConsumerBase {
final String producer2Msg = "producer2";
final int queueSize = 10;
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setReceiverQueueSize(queueSize);
-
admin.persistentTopics().createPartitionedTopic(topicName, numPartitions);
- ProducerConfiguration producerConf = new ProducerConfiguration();
- producerConf.setMessageRoutingMode(MessageRoutingMode.RoundRobinPartition);
- Producer producer1 = pulsarClient.createProducer(topicName + "-partition-0", producerConf);
- Producer producer2 = pulsarClient.createProducer(topicName + "-partition-1", producerConf);
+ Producer<byte[]> producer1 = pulsarClient.newProducer().topic(topicName + "-partition-0")
+ .messageRoutingMode(MessageRoutingMode.RoundRobinPartition).create();
+ Producer<byte[]> producer2 = pulsarClient.newProducer().topic(topicName + "-partition-1")
+ .messageRoutingMode(MessageRoutingMode.RoundRobinPartition).create();
- Consumer consumer = pulsarClient.subscribe(topicName, "my-partitioned-subscriber", conf);
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topicName)
+ .subscriptionName("my-partitioned-subscriber").receiverQueueSize(queueSize).subscribe();
int partition2Msgs = 0;
@@ -513,7 +468,7 @@ public class PartitionedProducerConsumerTest extends ProducerConsumerBase {
// also: we will keep producing messages to partition-1
int produceMsgInPartition1AfterNumberOfConsumeMessages = 2;
for (int i = 0; i < 3 * queueSize; i++) {
- Message msg = consumer.receive();
+ Message<byte[]> msg = consumer.receive();
partition2Msgs += (new String(msg.getData())).startsWith(producer2Msg) ? 1 : 0;
if (i >= produceMsgInPartition1AfterNumberOfConsumeMessages) {
producer1.send(producer1Msg.getBytes());
@@ -532,10 +487,10 @@ public class PartitionedProducerConsumerTest extends ProducerConsumerBase {
log.info("-- Exiting {} test --", methodName);
}
- private void receiveAsync(Consumer consumer, int totalMessage, int currentMessage, CountDownLatch latch,
+ private void receiveAsync(Consumer<byte[]> consumer, int totalMessage, int currentMessage, CountDownLatch latch,
final Set<String> consumeMsg, ExecutorService executor) throws PulsarClientException {
if (currentMessage < totalMessage) {
- CompletableFuture<Message> future = consumer.receiveAsync();
+ CompletableFuture<Message<byte[]>> future = consumer.receiveAsync();
future.handle((msg, exception) -> {
if (exception == null) {
// add message to consumer-queue to verify with produced messages
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/SimpleProducerConsumerStatTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/SimpleProducerConsumerStatTest.java
index 0bc78da..30a2c25 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/SimpleProducerConsumerStatTest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/SimpleProducerConsumerStatTest.java
@@ -34,14 +34,6 @@ import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
import org.apache.pulsar.client.admin.PulsarAdminException;
-import org.apache.pulsar.client.api.Consumer;
-import org.apache.pulsar.client.api.ConsumerConfiguration;
-import org.apache.pulsar.client.api.Message;
-import org.apache.pulsar.client.api.MessageId;
-import org.apache.pulsar.client.api.Producer;
-import org.apache.pulsar.client.api.ProducerConfiguration;
-import org.apache.pulsar.client.api.PulsarClientException;
-import org.apache.pulsar.client.api.SubscriptionType;
import org.apache.pulsar.client.impl.ConsumerStats;
import org.apache.pulsar.client.impl.ProducerStats;
import org.slf4j.Logger;
@@ -84,25 +76,25 @@ public class SimpleProducerConsumerStatTest extends ProducerConsumerBase {
@Test(dataProvider = "batch_with_timeout")
public void testSyncProducerAndConsumer(int batchMessageDelayMs, int ackTimeoutSec) throws Exception {
log.info("-- Starting {} test --", methodName);
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setSubscriptionType(SubscriptionType.Exclusive);
+ ConsumerBuilder<byte[]> consumerBuilder = pulsarClient.newConsumer()
+ .topic("persistent://my-property/tp1/my-ns/my-topic1").subscriptionName("my-subscriber-name");
+
// Cumulative Ack-counter works if ackTimeOutTimer-task is enabled
boolean isAckTimeoutTaskEnabledForCumulativeAck = ackTimeoutSec > 0;
if (ackTimeoutSec > 0) {
- conf.setAckTimeout(ackTimeoutSec, TimeUnit.SECONDS);
+ consumerBuilder.ackTimeout(ackTimeoutSec, TimeUnit.SECONDS);
}
- Consumer consumer = pulsarClient.subscribe("persistent://my-property/tp1/my-ns/my-topic1", "my-subscriber-name",
- conf);
+ Consumer<byte[]> consumer = consumerBuilder.subscribe();
- ProducerConfiguration producerConf = new ProducerConfiguration();
+ ProducerBuilder<byte[]> producerBuilder = pulsarClient.newProducer()
+ .topic("persistent://my-property/tp1/my-ns/my-topic1");
if (batchMessageDelayMs != 0) {
- producerConf.setBatchingEnabled(true);
- producerConf.setBatchingMaxPublishDelay(batchMessageDelayMs, TimeUnit.MILLISECONDS);
- producerConf.setBatchingMaxMessages(5);
+ producerBuilder.enableBatching(true).batchingMaxPublishDelay(batchMessageDelayMs, TimeUnit.MILLISECONDS)
+ .batchingMaxMessages(5);
}
- Producer producer = pulsarClient.createProducer("persistent://my-property/tp1/my-ns/my-topic1", producerConf);
+ Producer<byte[]> producer = producerBuilder.create();
int numMessages = 11;
for (int i = 0; i < numMessages; i++) {
@@ -110,7 +102,7 @@ public class SimpleProducerConsumerStatTest extends ProducerConsumerBase {
producer.send(message.getBytes());
}
- Message msg = null;
+ Message<byte[]> msg = null;
Set<String> messageSet = Sets.newHashSet();
for (int i = 0; i < numMessages; i++) {
msg = consumer.receive(5, TimeUnit.SECONDS);
@@ -131,23 +123,22 @@ public class SimpleProducerConsumerStatTest extends ProducerConsumerBase {
@Test(dataProvider = "batch_with_timeout")
public void testAsyncProducerAndAsyncAck(int batchMessageDelayMs, int ackTimeoutSec) throws Exception {
log.info("-- Starting {} test --", methodName);
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setSubscriptionType(SubscriptionType.Exclusive);
+ ConsumerBuilder<byte[]> consumerBuilder = pulsarClient.newConsumer()
+ .topic("persistent://my-property/tp1/my-ns/my-topic2").subscriptionName("my-subscriber-name");
if (ackTimeoutSec > 0) {
- conf.setAckTimeout(ackTimeoutSec, TimeUnit.SECONDS);
+ consumerBuilder.ackTimeout(ackTimeoutSec, TimeUnit.SECONDS);
}
- Consumer consumer = pulsarClient.subscribe("persistent://my-property/tp1/my-ns/my-topic2", "my-subscriber-name",
- conf);
+ Consumer<byte[]> consumer = consumerBuilder.subscribe();
- ProducerConfiguration producerConf = new ProducerConfiguration();
+ ProducerBuilder<byte[]> producerBuilder = pulsarClient.newProducer()
+ .topic("persistent://my-property/tp1/my-ns/my-topic2");
if (batchMessageDelayMs != 0) {
- producerConf.setBatchingMaxPublishDelay(batchMessageDelayMs, TimeUnit.MILLISECONDS);
- producerConf.setBatchingMaxMessages(5);
- producerConf.setBatchingEnabled(true);
+ producerBuilder.enableBatching(true).batchingMaxPublishDelay(batchMessageDelayMs, TimeUnit.MILLISECONDS)
+ .batchingMaxMessages(5);
}
- Producer producer = pulsarClient.createProducer("persistent://my-property/tp1/my-ns/my-topic2", producerConf);
+ Producer<byte[]> producer = producerBuilder.create();
List<Future<MessageId>> futures = Lists.newArrayList();
int numMessages = 50;
@@ -163,7 +154,7 @@ public class SimpleProducerConsumerStatTest extends ProducerConsumerBase {
future.get();
}
- Message msg = null;
+ Message<byte[]> msg = null;
Set<String> messageSet = Sets.newHashSet();
for (int i = 0; i < numMessages; i++) {
msg = consumer.receive(5, TimeUnit.SECONDS);
@@ -187,23 +178,22 @@ public class SimpleProducerConsumerStatTest extends ProducerConsumerBase {
public void testAsyncProducerAndReceiveAsyncAndAsyncAck(int batchMessageDelayMs, int ackTimeoutSec)
throws Exception {
log.info("-- Starting {} test --", methodName);
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setSubscriptionType(SubscriptionType.Exclusive);
+ ConsumerBuilder<byte[]> consumerBuilder = pulsarClient.newConsumer()
+ .topic("persistent://my-property/tp1/my-ns/my-topic2").subscriptionName("my-subscriber-name");
if (ackTimeoutSec > 0) {
- conf.setAckTimeout(ackTimeoutSec, TimeUnit.SECONDS);
+ consumerBuilder.ackTimeout(ackTimeoutSec, TimeUnit.SECONDS);
}
- Consumer consumer = pulsarClient.subscribe("persistent://my-property/tp1/my-ns/my-topic2", "my-subscriber-name",
- conf);
+ Consumer<byte[]> consumer = consumerBuilder.subscribe();
- ProducerConfiguration producerConf = new ProducerConfiguration();
+ ProducerBuilder<byte[]> producerBuilder = pulsarClient.newProducer()
+ .topic("persistent://my-property/tp1/my-ns/my-topic2");
if (batchMessageDelayMs != 0) {
- producerConf.setBatchingMaxPublishDelay(batchMessageDelayMs, TimeUnit.MILLISECONDS);
- producerConf.setBatchingMaxMessages(5);
- producerConf.setBatchingEnabled(true);
+ producerBuilder.enableBatching(true).batchingMaxPublishDelay(batchMessageDelayMs, TimeUnit.MILLISECONDS)
+ .batchingMaxMessages(5);
}
- Producer producer = pulsarClient.createProducer("persistent://my-property/tp1/my-ns/my-topic2", producerConf);
+ Producer<byte[]> producer = producerBuilder.create();
List<Future<MessageId>> futures = Lists.newArrayList();
int numMessages = 101;
@@ -218,8 +208,8 @@ public class SimpleProducerConsumerStatTest extends ProducerConsumerBase {
for (Future<MessageId> future : futures) {
future.get();
}
- Message msg = null;
- CompletableFuture<Message> future_msg = null;
+ Message<byte[]> msg = null;
+ CompletableFuture<Message<byte[]>> future_msg = null;
Set<String> messageSet = Sets.newHashSet();
for (int i = 0; i < numMessages; i++) {
future_msg = consumer.receiveAsync();
@@ -245,30 +235,28 @@ public class SimpleProducerConsumerStatTest extends ProducerConsumerBase {
@Test(dataProvider = "batch", timeOut = 100000)
public void testMessageListener(int batchMessageDelayMs) throws Exception {
log.info("-- Starting {} test --", methodName);
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setAckTimeout(100, TimeUnit.SECONDS);
- conf.setSubscriptionType(SubscriptionType.Exclusive);
int numMessages = 100;
final CountDownLatch latch = new CountDownLatch(numMessages);
- conf.setMessageListener((consumer, msg) -> {
- assertNotNull(msg, "Message cannot be null");
- String receivedMessage = new String(msg.getData());
- log.debug("Received message [{}] in the listener", receivedMessage);
- consumer.acknowledgeAsync(msg);
- latch.countDown();
- });
-
- Consumer consumer = pulsarClient.subscribe("persistent://my-property/tp1/my-ns/my-topic3", "my-subscriber-name",
- conf);
- ProducerConfiguration producerConf = new ProducerConfiguration();
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic("persistent://my-property/tp1/my-ns/my-topic3")
+ .subscriptionName("my-subscriber-name").ackTimeout(100, TimeUnit.SECONDS)
+ .messageListener((consumer1, msg) -> {
+ assertNotNull(msg, "Message cannot be null");
+ String receivedMessage = new String(msg.getData());
+ log.debug("Received message [{}] in the listener", receivedMessage);
+ consumer1.acknowledgeAsync(msg);
+ latch.countDown();
+ }).subscribe();
+
+ ProducerBuilder<byte[]> producerBuilder = pulsarClient.newProducer()
+ .topic("persistent://my-property/tp1/my-ns/my-topic3");
if (batchMessageDelayMs != 0) {
- producerConf.setBatchingMaxPublishDelay(batchMessageDelayMs, TimeUnit.MILLISECONDS);
- producerConf.setBatchingMaxMessages(5);
- producerConf.setBatchingEnabled(true);
+ producerBuilder.enableBatching(true).batchingMaxPublishDelay(batchMessageDelayMs, TimeUnit.MILLISECONDS)
+ .batchingMaxMessages(5);
}
- Producer producer = pulsarClient.createProducer("persistent://my-property/tp1/my-ns/my-topic3", producerConf);
+
+ Producer<byte[]> producer = producerBuilder.create();
List<Future<MessageId>> futures = Lists.newArrayList();
// Asynchronously produce messages
@@ -295,19 +283,18 @@ public class SimpleProducerConsumerStatTest extends ProducerConsumerBase {
public void testSendTimeout(int batchMessageDelayMs) throws Exception {
log.info("-- Starting {} test --", methodName);
- ConsumerConfiguration consumerConf = new ConsumerConfiguration();
- consumerConf.setSubscriptionType(SubscriptionType.Exclusive);
- Consumer consumer = pulsarClient.subscribe("persistent://my-property/tp1/my-ns/my-topic5", "my-subscriber-name",
- consumerConf);
- ProducerConfiguration producerConf = new ProducerConfiguration();
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic("persistent://my-property/tp1/my-ns/my-topic5")
+ .subscriptionName("my-subscriber-name").subscribe();
+
+ ProducerBuilder<byte[]> producerBuilder = pulsarClient.newProducer()
+ .topic("persistent://my-property/tp1/my-ns/my-topic5").sendTimeout(1, TimeUnit.SECONDS);
if (batchMessageDelayMs != 0) {
- producerConf.setBatchingMaxPublishDelay(2 * batchMessageDelayMs, TimeUnit.MILLISECONDS);
- producerConf.setBatchingMaxMessages(5);
- producerConf.setBatchingEnabled(true);
+ producerBuilder.enableBatching(true).batchingMaxPublishDelay(2 * batchMessageDelayMs, TimeUnit.MILLISECONDS)
+ .batchingMaxMessages(5);
}
- producerConf.setSendTimeout(1, TimeUnit.SECONDS);
- Producer producer = pulsarClient.createProducer("persistent://my-property/tp1/my-ns/my-topic5", producerConf);
+ Producer<byte[]> producer = producerBuilder.create();
+
final String message = "my-message";
// Trigger the send timeout
@@ -325,7 +312,7 @@ public class SimpleProducerConsumerStatTest extends ProducerConsumerBase {
startBroker();
// We should not have received any message
- Message msg = consumer.receive(3, TimeUnit.SECONDS);
+ Message<byte[]> msg = consumer.receive(3, TimeUnit.SECONDS);
assertNull(msg);
consumer.close();
producer.close();
@@ -338,21 +325,16 @@ public class SimpleProducerConsumerStatTest extends ProducerConsumerBase {
assertEquals(cStat.getTotalMsgsReceived(), cStat.getTotalAcksSent());
log.info("-- Exiting {} test --", methodName);
}
-
+
public void testBatchMessagesRateOut() throws PulsarClientException, InterruptedException, PulsarAdminException {
log.info("-- Starting {} test --", methodName);
String topicName = "persistent://my-property/cluster/my-ns/testBatchMessagesRateOut";
double produceRate = 17;
int batchSize = 5;
- ConsumerConfiguration consumerConf = new ConsumerConfiguration();
- consumerConf.setSubscriptionType(SubscriptionType.Exclusive);
- Consumer<byte[]> consumer = pulsarClient.subscribe(topicName, "my-subscriber-name", consumerConf);
- ProducerConfiguration producerConf = new ProducerConfiguration();
- producerConf.setBatchingMaxMessages(batchSize);
- producerConf.setBatchingEnabled(true);
- producerConf.setBatchingMaxPublishDelay(2, TimeUnit.SECONDS);
-
- Producer producer = pulsarClient.createProducer(topicName, producerConf);
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topicName).subscriptionName("my-subscriber-name")
+ .subscribe();
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topicName).batchingMaxMessages(batchSize)
+ .enableBatching(true).batchingMaxPublishDelay(2, TimeUnit.SECONDS).create();
AtomicBoolean runTest = new AtomicBoolean(true);
Thread t1 = new Thread(() -> {
RateLimiter r = RateLimiter.create(produceRate);
@@ -372,7 +354,7 @@ public class SimpleProducerConsumerStatTest extends ProducerConsumerBase {
log.info("-- Exiting {} test --", methodName);
}
- public void validatingLogInfo(Consumer consumer, Producer producer, boolean verifyAckCount)
+ public void validatingLogInfo(Consumer<?> consumer, Producer<?> producer, boolean verifyAckCount)
throws InterruptedException {
// Waiting for recording last stat info
Thread.sleep(1000);
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/SimpleProducerConsumerTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/SimpleProducerConsumerTest.java
index 3aff2a7..2cc4cf9 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/SimpleProducerConsumerTest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/SimpleProducerConsumerTest.java
@@ -32,8 +32,6 @@ import java.io.IOException;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.nio.file.Files;
-import java.nio.file.LinkOption;
-import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;
import java.util.Map;
@@ -54,6 +52,7 @@ import java.util.stream.Collectors;
import org.apache.bookkeeper.mledger.impl.EntryCacheImpl;
import org.apache.bookkeeper.mledger.impl.ManagedLedgerImpl;
import org.apache.pulsar.broker.service.persistent.PersistentTopic;
+import org.apache.pulsar.client.api.PulsarClientException.InvalidConfigurationException;
import org.apache.pulsar.client.impl.ConsumerImpl;
import org.apache.pulsar.client.impl.MessageIdImpl;
import org.apache.pulsar.common.api.PulsarDecoder;
@@ -95,26 +94,25 @@ public class SimpleProducerConsumerTest extends ProducerConsumerBase {
public void testSyncProducerAndConsumer(int batchMessageDelayMs) throws Exception {
log.info("-- Starting {} test --", methodName);
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setSubscriptionType(SubscriptionType.Exclusive);
- Consumer consumer = pulsarClient.subscribe("persistent://my-property/use/my-ns/my-topic1", "my-subscriber-name",
- conf);
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic("persistent://my-property/use/my-ns/my-topic1")
+ .subscriptionName("my-subscriber-name").subscribe();
- ProducerConfiguration producerConf = new ProducerConfiguration();
+ ProducerBuilder<byte[]> producerBuilder = pulsarClient.newProducer()
+ .topic("persistent://my-property/use/my-ns/my-topic1");
if (batchMessageDelayMs != 0) {
- producerConf.setBatchingEnabled(true);
- producerConf.setBatchingMaxPublishDelay(batchMessageDelayMs, TimeUnit.MILLISECONDS);
- producerConf.setBatchingMaxMessages(5);
+ producerBuilder.enableBatching(true);
+ producerBuilder.batchingMaxPublishDelay(batchMessageDelayMs, TimeUnit.MILLISECONDS);
+ producerBuilder.batchingMaxMessages(5);
}
- Producer producer = pulsarClient.createProducer("persistent://my-property/use/my-ns/my-topic1", producerConf);
+ Producer<byte[]> producer = producerBuilder.create();
for (int i = 0; i < 10; i++) {
String message = "my-message-" + i;
producer.send(message.getBytes());
}
- Message msg = null;
+ Message<byte[]> msg = null;
Set<String> messageSet = Sets.newHashSet();
for (int i = 0; i < 10; i++) {
msg = consumer.receive(5, TimeUnit.SECONDS);
@@ -132,17 +130,18 @@ public class SimpleProducerConsumerTest extends ProducerConsumerBase {
@Test(dataProvider = "batch")
public void testAsyncProducerAndAsyncAck(int batchMessageDelayMs) throws Exception {
log.info("-- Starting {} test --", methodName);
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setSubscriptionType(SubscriptionType.Exclusive);
- Consumer consumer = pulsarClient.subscribe("persistent://my-property/use/my-ns/my-topic2", "my-subscriber-name",
- conf);
- ProducerConfiguration producerConf = new ProducerConfiguration();
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic("persistent://my-property/use/my-ns/my-topic2")
+ .subscriptionName("my-subscriber-name").subscribe();
+
+ ProducerBuilder<byte[]> producerBuilder = pulsarClient.newProducer()
+ .topic("persistent://my-property/use/my-ns/my-topic2");
+
if (batchMessageDelayMs != 0) {
- producerConf.setBatchingMaxPublishDelay(batchMessageDelayMs, TimeUnit.MILLISECONDS);
- producerConf.setBatchingMaxMessages(5);
- producerConf.setBatchingEnabled(true);
+ producerBuilder.enableBatching(true);
+ producerBuilder.batchingMaxPublishDelay(batchMessageDelayMs, TimeUnit.MILLISECONDS);
+ producerBuilder.batchingMaxMessages(5);
}
- Producer producer = pulsarClient.createProducer("persistent://my-property/use/my-ns/my-topic2", producerConf);
+ Producer<byte[]> producer = producerBuilder.create();
List<Future<MessageId>> futures = Lists.newArrayList();
// Asynchronously produce messages
@@ -157,7 +156,7 @@ public class SimpleProducerConsumerTest extends ProducerConsumerBase {
future.get();
}
- Message msg = null;
+ Message<byte[]> msg = null;
Set<String> messageSet = Sets.newHashSet();
for (int i = 0; i < 10; i++) {
msg = consumer.receive(5, TimeUnit.SECONDS);
@@ -178,28 +177,28 @@ public class SimpleProducerConsumerTest extends ProducerConsumerBase {
@Test(dataProvider = "batch", timeOut = 100000)
public void testMessageListener(int batchMessageDelayMs) throws Exception {
log.info("-- Starting {} test --", methodName);
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setSubscriptionType(SubscriptionType.Exclusive);
int numMessages = 100;
final CountDownLatch latch = new CountDownLatch(numMessages);
- conf.setMessageListener((consumer, msg) -> {
- Assert.assertNotNull(msg, "Message cannot be null");
- String receivedMessage = new String(msg.getData());
- log.debug("Received message [{}] in the listener", receivedMessage);
- consumer.acknowledgeAsync(msg);
- latch.countDown();
- });
- Consumer consumer = pulsarClient.subscribe("persistent://my-property/use/my-ns/my-topic3", "my-subscriber-name",
- conf);
- ProducerConfiguration producerConf = new ProducerConfiguration();
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic("persistent://my-property/use/my-ns/my-topic3")
+ .subscriptionName("my-subscriber-name").messageListener((c1, msg) -> {
+ Assert.assertNotNull(msg, "Message cannot be null");
+ String receivedMessage = new String(msg.getData());
+ log.debug("Received message [{}] in the listener", receivedMessage);
+ c1.acknowledgeAsync(msg);
+ latch.countDown();
+ }).subscribe();
+
+ ProducerBuilder<byte[]> producerBuilder = pulsarClient.newProducer()
+ .topic("persistent://my-property/use/my-ns/my-topic3");
+
if (batchMessageDelayMs != 0) {
- producerConf.setBatchingMaxPublishDelay(batchMessageDelayMs, TimeUnit.MILLISECONDS);
- producerConf.setBatchingMaxMessages(5);
- producerConf.setBatchingEnabled(true);
+ producerBuilder.enableBatching(true);
+ producerBuilder.batchingMaxPublishDelay(batchMessageDelayMs, TimeUnit.MILLISECONDS);
+ producerBuilder.batchingMaxMessages(5);
}
- Producer producer = pulsarClient.createProducer("persistent://my-property/use/my-ns/my-topic3", producerConf);
+ Producer<byte[]> producer = producerBuilder.create();
List<Future<MessageId>> futures = Lists.newArrayList();
// Asynchronously produce messages
@@ -224,18 +223,17 @@ public class SimpleProducerConsumerTest extends ProducerConsumerBase {
public void testBackoffAndReconnect(int batchMessageDelayMs) throws Exception {
log.info("-- Starting {} test --", methodName);
// Create consumer and producer
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setSubscriptionType(SubscriptionType.Exclusive);
- Consumer consumer = pulsarClient.subscribe("persistent://my-property/use/my-ns/my-topic4", "my-subscriber-name",
- conf);
- ProducerConfiguration producerConf = new ProducerConfiguration();
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic("persistent://my-property/use/my-ns/my-topic4")
+ .subscriptionName("my-subscriber-name").subscribe();
+ ProducerBuilder<byte[]> producerBuilder = pulsarClient.newProducer()
+ .topic("persistent://my-property/use/my-ns/my-topic4");
+
if (batchMessageDelayMs != 0) {
- producerConf.setBatchingMaxPublishDelay(batchMessageDelayMs, TimeUnit.MILLISECONDS);
- producerConf.setBatchingMaxMessages(5);
- producerConf.setBatchingEnabled(true);
+ producerBuilder.enableBatching(true);
+ producerBuilder.batchingMaxPublishDelay(batchMessageDelayMs, TimeUnit.MILLISECONDS);
+ producerBuilder.batchingMaxMessages(5);
}
- Producer producer = pulsarClient.createProducer("persistent://my-property/use/my-ns/my-topic4", producerConf);
-
+ Producer<byte[]> producer = producerBuilder.create();
// Produce messages
CompletableFuture<MessageId> lastFuture = null;
for (int i = 0; i < 10; i++) {
@@ -247,7 +245,7 @@ public class SimpleProducerConsumerTest extends ProducerConsumerBase {
lastFuture.get();
- Message msg = null;
+ Message<byte[]> msg = null;
for (int i = 0; i < 10; i++) {
msg = consumer.receive(5, TimeUnit.SECONDS);
log.info("Received: [{}]", new String(msg.getData()));
@@ -274,19 +272,17 @@ public class SimpleProducerConsumerTest extends ProducerConsumerBase {
public void testSendTimeout(int batchMessageDelayMs) throws Exception {
log.info("-- Starting {} test --", methodName);
- ConsumerConfiguration consumerConf = new ConsumerConfiguration();
- consumerConf.setSubscriptionType(SubscriptionType.Exclusive);
- Consumer consumer = pulsarClient.subscribe("persistent://my-property/use/my-ns/my-topic5", "my-subscriber-name",
- consumerConf);
- ProducerConfiguration producerConf = new ProducerConfiguration();
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic("persistent://my-property/use/my-ns/my-topic5")
+ .subscriptionName("my-subscriber-name").subscribe();
+ ProducerBuilder<byte[]> producerBuilder = pulsarClient.newProducer()
+ .topic("persistent://my-property/use/my-ns/my-topic5").sendTimeout(1, TimeUnit.SECONDS);
+
if (batchMessageDelayMs != 0) {
- producerConf.setBatchingMaxPublishDelay(2 * batchMessageDelayMs, TimeUnit.MILLISECONDS);
- producerConf.setBatchingMaxMessages(5);
- producerConf.setBatchingEnabled(true);
+ producerBuilder.enableBatching(true);
+ producerBuilder.batchingMaxPublishDelay(batchMessageDelayMs, TimeUnit.MILLISECONDS);
+ producerBuilder.batchingMaxMessages(5);
}
- producerConf.setSendTimeout(1, TimeUnit.SECONDS);
-
- Producer producer = pulsarClient.createProducer("persistent://my-property/use/my-ns/my-topic5", producerConf);
+ Producer<byte[]> producer = producerBuilder.create();
final String message = "my-message";
// Trigger the send timeout
@@ -304,7 +300,7 @@ public class SimpleProducerConsumerTest extends ProducerConsumerBase {
startBroker();
// We should not have received any message
- Message msg = consumer.receive(3, TimeUnit.SECONDS);
+ Message<byte[]> msg = consumer.receive(3, TimeUnit.SECONDS);
Assert.assertNull(msg);
consumer.close();
log.info("-- Exiting {} test --", methodName);
@@ -314,32 +310,29 @@ public class SimpleProducerConsumerTest extends ProducerConsumerBase {
public void testInvalidSequence() throws Exception {
log.info("-- Starting {} test --", methodName);
- PulsarClient client1 = PulsarClient.create("http://127.0.0.1:" + BROKER_WEBSERVICE_PORT);
+ PulsarClient client1 = PulsarClient.builder().serviceUrl("http://127.0.0.1:" + BROKER_WEBSERVICE_PORT).build();
client1.close();
- ConsumerConfiguration consumerConf = new ConsumerConfiguration();
- consumerConf.setSubscriptionType(SubscriptionType.Exclusive);
-
try {
- Consumer consumer = client1.subscribe("persistent://my-property/use/my-ns/my-topic6", "my-subscriber-name",
- consumerConf);
+ client1.newConsumer().topic("persistent://my-property/use/my-ns/my-topic6")
+ .subscriptionName("my-subscriber-name").subscribe();
Assert.fail("Should fail");
} catch (PulsarClientException e) {
Assert.assertTrue(e instanceof PulsarClientException.AlreadyClosedException);
}
try {
- Producer producer = client1.createProducer("persistent://my-property/use/my-ns/my-topic6");
+ client1.newProducer().topic("persistent://my-property/use/my-ns/my-topic6").create();
Assert.fail("Should fail");
} catch (PulsarClientException e) {
Assert.assertTrue(e instanceof PulsarClientException.AlreadyClosedException);
}
- Consumer consumer = pulsarClient.subscribe("persistent://my-property/use/my-ns/my-topic6", "my-subscriber-name",
- consumerConf);
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic("persistent://my-property/use/my-ns/my-topic6")
+ .subscriptionName("my-subscriber-name").subscribe();
try {
- Message msg = MessageBuilder.create().setContent("InvalidMessage".getBytes()).build();
+ Message<byte[]> msg = MessageBuilder.create().setContent("InvalidMessage".getBytes()).build();
consumer.acknowledge(msg);
} catch (PulsarClientException.InvalidMessageException e) {
// ok
@@ -361,7 +354,8 @@ public class SimpleProducerConsumerTest extends ProducerConsumerBase {
// ok
}
- Producer producer = pulsarClient.createProducer("persistent://my-property/use/my-ns/my-topic6");
+ Producer<byte[]> producer = pulsarClient.newProducer().topic("persistent://my-property/use/my-ns/my-topic6")
+ .create();
producer.close();
try {
@@ -376,91 +370,72 @@ public class SimpleProducerConsumerTest extends ProducerConsumerBase {
@Test
public void testSillyUser() {
try {
- PulsarClient client1 = PulsarClient.create("invalid://url");
+ PulsarClient.builder().serviceUrl("invalid://url").build();
Assert.fail("should fail");
} catch (PulsarClientException e) {
Assert.assertTrue(e instanceof PulsarClientException.InvalidServiceURL);
}
- ProducerConfiguration producerConf = new ProducerConfiguration();
-
try {
- producerConf.setSendTimeout(-1, TimeUnit.SECONDS);
+ pulsarClient.newProducer().sendTimeout(-1, TimeUnit.SECONDS);
Assert.fail("should fail");
} catch (IllegalArgumentException e) {
// ok
}
try {
- producerConf.setMaxPendingMessages(0);
+ pulsarClient.newProducer().maxPendingMessages(0);
Assert.fail("should fail");
} catch (IllegalArgumentException e) {
// ok
}
try {
- Producer producer = pulsarClient.createProducer("persistent://my-property/use/my-ns/my-topic7", (ProducerConfiguration) null);
- Assert.fail("should fail");
- } catch (PulsarClientException e) {
- Assert.assertTrue(e instanceof PulsarClientException.InvalidConfigurationException);
- }
-
- try {
- Producer producer = pulsarClient.createProducer("invalid://topic", producerConf);
+ pulsarClient.newProducer().topic("invalid://topic").create();
Assert.fail("should fail");
} catch (PulsarClientException e) {
Assert.assertTrue(e instanceof PulsarClientException.InvalidTopicNameException);
}
- ConsumerConfiguration consumerConf = new ConsumerConfiguration();
-
try {
- consumerConf.setMessageListener(null);
+ pulsarClient.newConsumer().messageListener(null);
Assert.fail("should fail");
} catch (NullPointerException e) {
// ok
}
try {
- consumerConf.setSubscriptionType(null);
+ pulsarClient.newConsumer().subscriptionType(null);
Assert.fail("should fail");
} catch (NullPointerException e) {
// ok
}
try {
- consumerConf.setReceiverQueueSize(-1);
+ pulsarClient.newConsumer().receiverQueueSize(-1);
Assert.fail("should fail");
} catch (IllegalArgumentException e) {
// ok
}
try {
- Consumer consumer = pulsarClient.subscribe("persistent://my-property/use/my-ns/my-topic7",
- "my-subscriber-name", (ConsumerConfiguration) null);
+ pulsarClient.newConsumer().topic("persistent://my-property/use/my-ns/my-topic7").subscriptionName(null)
+ .subscribe();
Assert.fail("Should fail");
} catch (PulsarClientException e) {
- Assert.assertTrue(e instanceof PulsarClientException.InvalidConfigurationException);
+ assertEquals(e.getClass(), InvalidConfigurationException.class);
}
try {
- Consumer consumer = pulsarClient.subscribe("persistent://my-property/use/my-ns/my-topic7", null,
- consumerConf);
+ pulsarClient.newConsumer().topic("persistent://my-property/use/my-ns/my-topic7").subscriptionName("")
+ .subscribe();
Assert.fail("Should fail");
} catch (PulsarClientException e) {
Assert.assertTrue(e instanceof PulsarClientException.InvalidConfigurationException);
}
try {
- Consumer consumer = pulsarClient.subscribe("persistent://my-property/use/my-ns/my-topic7", "",
- consumerConf);
- Assert.fail("Should fail");
- } catch (PulsarClientException e) {
- Assert.assertTrue(e instanceof PulsarClientException.InvalidConfigurationException);
- }
-
- try {
- Consumer consumer = pulsarClient.subscribe("invalid://topic7", "my-subscriber-name", consumerConf);
+ pulsarClient.newConsumer().topic("invalid://topic7").subscriptionName("my-subscriber-name").subscribe();
Assert.fail("Should fail");
} catch (PulsarClientException e) {
Assert.assertTrue(e instanceof PulsarClientException.InvalidTopicNameException);
@@ -475,10 +450,10 @@ public class SimpleProducerConsumerTest extends ProducerConsumerBase {
final int recvQueueSize = 100;
final int numConsumersThreads = 10;
- final ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setReceiverQueueSize(recvQueueSize);
String subName = UUID.randomUUID().toString();
- final Consumer consumer = pulsarClient.subscribe("persistent://my-property/use/my-ns/my-topic7", subName, conf);
+ final Consumer<byte[]> consumer = pulsarClient.newConsumer()
+ .topic("persistent://my-property/use/my-ns/my-topic7").subscriptionName(subName)
+ .receiverQueueSize(recvQueueSize).subscribe();
ExecutorService executor = Executors.newCachedThreadPool();
final CyclicBarrier barrier = new CyclicBarrier(numConsumersThreads + 1);
@@ -502,20 +477,22 @@ public class SimpleProducerConsumerTest extends ProducerConsumerBase {
Thread.sleep(2000);
// publish 100 messages so that the consumers blocked on receive() will now get the messages
- ProducerConfiguration producerConf = new ProducerConfiguration();
+ ProducerBuilder<byte[]> producerBuilder = pulsarClient.newProducer()
+ .topic("persistent://my-property/use/my-ns/my-topic7");
+
if (batchMessageDelayMs != 0) {
- producerConf.setBatchingMaxPublishDelay(batchMessageDelayMs, TimeUnit.MILLISECONDS);
- producerConf.setBatchingMaxMessages(5);
- producerConf.setBatchingEnabled(true);
+ producerBuilder.batchingMaxPublishDelay(batchMessageDelayMs, TimeUnit.MILLISECONDS);
+ producerBuilder.batchingMaxMessages(5);
+ producerBuilder.enableBatching(true);
}
- Producer producer = pulsarClient.createProducer("persistent://my-property/use/my-ns/my-topic7", producerConf);
+ Producer<byte[]> producer = producerBuilder.create();
for (int i = 0; i < recvQueueSize; i++) {
String message = "my-message-" + i;
producer.send(message.getBytes());
}
Thread.sleep(500);
- ConsumerImpl consumerImpl = (ConsumerImpl) consumer;
+ ConsumerImpl<byte[]> consumerImpl = (ConsumerImpl<byte[]>) consumer;
// The available permits should be 10 and num messages in the queue should be 90
Assert.assertEquals(consumerImpl.getAvailablePermits(), numConsumersThreads);
Assert.assertEquals(consumerImpl.numMessagesInQueue(), recvQueueSize - numConsumersThreads);
@@ -540,7 +517,7 @@ public class SimpleProducerConsumerTest extends ProducerConsumerBase {
// clear the queue
while (true) {
- Message msg = consumer.receive(1, TimeUnit.SECONDS);
+ Message<byte[]> msg = consumer.receive(1, TimeUnit.SECONDS);
if (msg == null) {
break;
}
@@ -583,8 +560,9 @@ public class SimpleProducerConsumerTest extends ProducerConsumerBase {
try {
final String topic = "persistent://my-property/use/my-ns/bigMsg";
- Producer producer = pulsarClient.createProducer(topic);
- Message message = MessageBuilder.create().setContent(new byte[PulsarDecoder.MaxMessageSize + 1]).build();
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topic).create();
+ Message<byte[]> message = MessageBuilder.create().setContent(new byte[PulsarDecoder.MaxMessageSize + 1])
+ .build();
producer.send(message);
fail("Should have thrown exception");
} catch (PulsarClientException.InvalidMessageException e) {
@@ -613,18 +591,16 @@ public class SimpleProducerConsumerTest extends ProducerConsumerBase {
final String topic = "persistent://my-property/use/my-ns/bigMsg";
// (a) non-batch msg with compression
- ProducerConfiguration producerConf = new ProducerConfiguration();
- producerConf.setCompressionType(CompressionType.LZ4);
- Producer producer = pulsarClient.createProducer(topic, producerConf);
- Message message = MessageBuilder.create().setContent(new byte[PulsarDecoder.MaxMessageSize + 1]).build();
+ Producer<byte[]> producer = pulsarClient.newProducer().topic(topic).compressionType(CompressionType.LZ4)
+ .create();
+ Message<byte[]> message = MessageBuilder.create().setContent(new byte[PulsarDecoder.MaxMessageSize + 1])
+ .build();
producer.send(message);
producer.close();
// (b) batch-msg
- producerConf = new ProducerConfiguration();
- producerConf.setBatchingEnabled(true);
- producerConf.setCompressionType(CompressionType.LZ4);
- producer = pulsarClient.createProducer(topic, producerConf);
+ producer = pulsarClient.newProducer().topic(topic).enableBatching(true).compressionType(CompressionType.LZ4)
+ .create();
message = MessageBuilder.create().setContent(new byte[PulsarDecoder.MaxMessageSize + 1]).build();
try {
producer.send(message);
@@ -635,9 +611,7 @@ public class SimpleProducerConsumerTest extends ProducerConsumerBase {
producer.close();
// (c) non-batch msg without compression
- producerConf = new ProducerConfiguration();
- producerConf.setCompressionType(CompressionType.NONE);
- producer = pulsarClient.createProducer(topic, producerConf);
+ producer = pulsarClient.newProducer().topic(topic).compressionType(CompressionType.NONE).create();
message = MessageBuilder.create().setContent(new byte[PulsarDecoder.MaxMessageSize + 1]).build();
try {
producer.send(message);
@@ -648,10 +622,8 @@ public class SimpleProducerConsumerTest extends ProducerConsumerBase {
producer.close();
// (d) non-batch msg with compression and try to consume message
- producerConf = new ProducerConfiguration();
- producerConf.setCompressionType(CompressionType.LZ4);
- producer = pulsarClient.createProducer(topic, producerConf);
- Consumer consumer = pulsarClient.subscribe(topic, "sub1");
+ producer = pulsarClient.newProducer().topic(topic).compressionType(CompressionType.LZ4).create();
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic(topic).subscriptionName("sub1").subscribe();
byte[] content = new byte[PulsarDecoder.MaxMessageSize + 10];
message = MessageBuilder.create().setContent(content).build();
producer.send(message);
@@ -681,23 +653,21 @@ public class SimpleProducerConsumerTest extends ProducerConsumerBase {
final String topicName = "cache-topic";
final String sub1 = "faster-sub1";
final String sub2 = "slower-sub2";
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setSubscriptionType(SubscriptionType.Shared);
- conf.setReceiverQueueSize(receiverSize);
-
- ProducerConfiguration producerConf = new ProducerConfiguration();
-
- if (batchMessageDelayMs != 0) {
- producerConf.setBatchingEnabled(true);
- producerConf.setBatchingMaxPublishDelay(batchMessageDelayMs, TimeUnit.MILLISECONDS);
- producerConf.setBatchingMaxMessages(5);
- }
/************ usecase-1: *************/
// 1. Subscriber Faster subscriber
- Consumer subscriber1 = pulsarClient.subscribe("persistent://my-property/use/my-ns/" + topicName, sub1, conf);
+ Consumer<byte[]> subscriber1 = pulsarClient.newConsumer()
+ .topic("persistent://my-property/use/my-ns/" + topicName).subscriptionName(sub1)
+ .subscriptionType(SubscriptionType.Shared).receiverQueueSize(receiverSize).subscribe();
final String topic = "persistent://my-property/use/my-ns/" + topicName;
- Producer producer = pulsarClient.createProducer(topic, producerConf);
+ ProducerBuilder<byte[]> producerBuilder = pulsarClient.newProducer().topic(topic);
+
+ if (batchMessageDelayMs != 0) {
+ producerBuilder.batchingMaxPublishDelay(batchMessageDelayMs, TimeUnit.MILLISECONDS);
+ producerBuilder.batchingMaxMessages(5);
+ producerBuilder.enableBatching(true);
+ }
+ Producer<byte[]> producer = producerBuilder.create();
PersistentTopic topicRef = (PersistentTopic) pulsar.getBrokerService().getTopicReference(topic);
ManagedLedgerImpl ledger = (ManagedLedgerImpl) topicRef.getManagedLedger();
@@ -709,7 +679,7 @@ public class SimpleProducerConsumerTest extends ProducerConsumerBase {
EntryCacheImpl entryCache = spy((EntryCacheImpl) cacheField.get(ledger));
cacheField.set(ledger, entryCache);
- Message msg = null;
+ Message<byte[]> msg = null;
// 2. Produce messages
for (int i = 0; i < 30; i++) {
String message = "my-message-" + i;
@@ -737,7 +707,8 @@ public class SimpleProducerConsumerTest extends ProducerConsumerBase {
/************ usecase-2: *************/
// 1.b Subscriber slower-subscriber
- Consumer subscriber2 = pulsarClient.subscribe("persistent://my-property/use/my-ns/" + topicName, sub2, conf);
+ Consumer<byte[]> subscriber2 = pulsarClient.newConsumer()
+ .topic("persistent://my-property/use/my-ns/" + topicName).subscriptionName(sub2).subscribe();
// Produce messages
final int moreMessages = 10;
for (int i = 0; i < receiverSize + moreMessages; i++) {
@@ -763,10 +734,10 @@ public class SimpleProducerConsumerTest extends ProducerConsumerBase {
// 3.b Close subscriber2: which will trigger cache to clear the cache
subscriber2.close();
-
+
// retry strategically until broker clean up closed subscribers and invalidate all cache entries
retryStrategically((test) -> entryCache.getSize() == 0, 5, 100);
-
+
// Verify: EntryCache should be cleared
assertTrue(entryCache.getSize() == 0);
subscriber1.close();
@@ -783,24 +754,22 @@ public class SimpleProducerConsumerTest extends ProducerConsumerBase {
final String topic = "persistent://my-property/use/my-ns/" + topicName;
final String sub1 = "faster-sub1";
final String sub2 = "slower-sub2";
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setSubscriptionType(SubscriptionType.Shared);
- conf.setReceiverQueueSize(receiverSize);
- ProducerConfiguration producerConf = new ProducerConfiguration();
+ // 1. Subscriber Faster subscriber: let it consume all messages immediately
+ Consumer<byte[]> subscriber1 = pulsarClient.newConsumer()
+ .topic("persistent://my-property/use/my-ns/" + topicName).subscriptionName(sub1)
+ .subscriptionType(SubscriptionType.Shared).receiverQueueSize(receiverSize).subscribe();
+ // 1.b. Subscriber Slow subscriber:
+ Consumer<byte[]> subscriber2 = pulsarClient.newConsumer()
+ .topic("persistent://my-property/use/my-ns/" + topicName).subscriptionName(sub2)
+ .subscriptionType(SubscriptionType.Shared).receiverQueueSize(receiverSize).subscribe();
+ ProducerBuilder<byte[]> producerBuilder = pulsarClient.newProducer().topic(topic);
if (batchMessageDelayMs != 0) {
- producerConf.setBatchingEnabled(true);
- producerConf.setBatchingMaxPublishDelay(batchMessageDelayMs, TimeUnit.MILLISECONDS);
- producerConf.setBatchingMaxMessages(5);
+ producerBuilder.enableBatching(true).batchingMaxPublishDelay(batchMessageDelayMs, TimeUnit.MILLISECONDS)
+ .batchingMaxMessages(5);
}
-
- // 1. Subscriber Faster subscriber: let it consume all messages immediately
- Consumer subscriber1 = pulsarClient.subscribe("persistent://my-property/use/my-ns/" + topicName, sub1, conf);
- // 1.b. Subscriber Slow subscriber:
- conf.setReceiverQueueSize(receiverSize);
- Consumer subscriber2 = pulsarClient.subscribe("persistent://my-property/use/my-ns/" + topicName, sub2, conf);
- Producer producer = pulsarClient.createProducer(topic, producerConf);
+ Producer<byte[]> producer = producerBuilder.create();
PersistentTopic topicRef = (PersistentTopic) pulsar.getBrokerService().getTopicReference(topic);
ManagedLedgerImpl ledger = (ManagedLedgerImpl) topicRef.getManagedLedger();
@@ -817,7 +786,7 @@ public class SimpleProducerConsumerTest extends ProducerConsumerBase {
field.set(ledger, maxMessageCacheRetentionTimeMillis);
final long maxActiveCursorBacklogEntries = (long) backlogThresholdField.get(ledger);
- Message msg = null;
+ Message<byte[]> msg = null;
final int totalMsgs = (int) maxActiveCursorBacklogEntries + receiverSize + 1;
// 2. Produce messages
for (int i = 0; i < totalMsgs; i++) {
@@ -865,15 +834,13 @@ public class SimpleProducerConsumerTest extends ProducerConsumerBase {
final int totalMsg = 100;
final Set<String> produceMsgs = Sets.newHashSet();
final Set<String> consumeMsgs = Sets.newHashSet();
- final ProducerConfiguration producerConf = new ProducerConfiguration();
- final ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setSubscriptionType(SubscriptionType.Exclusive);
- Consumer consumer = pulsarClient.subscribe("persistent://my-property/use/my-ns/my-topic1", "my-subscriber-name",
- conf);
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic("persistent://my-property/use/my-ns/my-topic1")
+ .subscriptionName("my-subscriber-name").subscribe();
// produce message
- Producer producer = pulsarClient.createProducer("persistent://my-property/use/my-ns/my-topic1", producerConf);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic("persistent://my-property/use/my-ns/my-topic1")
+ .create();
for (int i = 0; i < totalMsg; i++) {
String message = "my-message-" + i;
producer.send(message.getBytes());
@@ -906,15 +873,13 @@ public class SimpleProducerConsumerTest extends ProducerConsumerBase {
final int totalMsg = 100;
final Set<String> produceMsgs = Sets.newHashSet();
final Set<String> consumeMsgs = Sets.newHashSet();
- final ProducerConfiguration producerConf = new ProducerConfiguration();
- final ConsumerConfiguration conf = new ConsumerConfiguration();
-
- conf.setSubscriptionType(SubscriptionType.Exclusive);
- Consumer consumer = pulsarClient.subscribe("persistent://my-property/use/my-ns/my-topic1", "my-subscriber-name",
- conf);
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic("persistent://my-property/use/my-ns/my-topic1")
+ .subscriptionName("my-subscriber-name").subscribe();
+ ;
// produce message
- Producer producer = pulsarClient.createProducer("persistent://my-property/use/my-ns/my-topic1", producerConf);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic("persistent://my-property/use/my-ns/my-topic1")
+ .create();
for (int i = 0; i < totalMsg; i++) {
String message = "my-message-" + i;
producer.send(message.getBytes());
@@ -945,11 +910,11 @@ public class SimpleProducerConsumerTest extends ProducerConsumerBase {
log.info("-- Starting {} test --", methodName);
final int totalMsg = 100;
- final ProducerConfiguration producerConf = new ProducerConfiguration();
- Producer producer = pulsarClient.createProducer("persistent://my-property/use/my-ns/my-topic1", producerConf);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic("persistent://my-property/use/my-ns/my-topic1")
+ .create();
for (int i = 0; i < totalMsg; i++) {
final String message = "my-message-" + i;
- Message msg = MessageBuilder.create().setContent(message.getBytes()).build();
+ Message<byte[]> msg = MessageBuilder.create().setContent(message.getBytes()).build();
final AtomicInteger msgLength = new AtomicInteger();
CompletableFuture<MessageId> future = producer.sendAsync(msg).handle((r, ex) -> {
if (ex != null) {
@@ -974,25 +939,22 @@ public class SimpleProducerConsumerTest extends ProducerConsumerBase {
public void testSharedConsumerAckDifferentConsumer() throws Exception {
log.info("-- Starting {} test --", methodName);
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setReceiverQueueSize(1);
- conf.setSubscriptionType(SubscriptionType.Shared);
- Consumer consumer1 = pulsarClient.subscribe("persistent://my-property/use/my-ns/my-topic1", "my-subscriber-name",
- conf);
- Consumer consumer2 = pulsarClient.subscribe("persistent://my-property/use/my-ns/my-topic1", "my-subscriber-name",
- conf);
-
- ProducerConfiguration producerConf = new ProducerConfiguration();
+ ConsumerBuilder<byte[]> consumerBuilder = pulsarClient.newConsumer()
+ .topic("persistent://my-property/use/my-ns/my-topic1").subscriptionName("my-subscriber-name")
+ .receiverQueueSize(1).subscriptionType(SubscriptionType.Shared);
+ Consumer<byte[]> consumer1 = consumerBuilder.subscribe();
+ Consumer<byte[]> consumer2 = consumerBuilder.subscribe();
- Producer producer = pulsarClient.createProducer("persistent://my-property/use/my-ns/my-topic1", producerConf);
+ Producer<byte[]> producer = pulsarClient.newProducer().topic("persistent://my-property/use/my-ns/my-topic1")
+ .create();
for (int i = 0; i < 10; i++) {
String message = "my-message-" + i;
producer.send(message.getBytes());
}
- Message msg = null;
- Set<Message> consumerMsgSet1 = Sets.newHashSet();
- Set<Message> consumerMsgSet2 = Sets.newHashSet();
+ Message<byte[]> msg = null;
+ Set<Message<byte[]>> consumerMsgSet1 = Sets.newHashSet();
+ Set<Message<byte[]>> consumerMsgSet2 = Sets.newHashSet();
for (int i = 0; i < 5; i++) {
msg = consumer1.receive();
consumerMsgSet1.add(msg);
@@ -1032,10 +994,10 @@ public class SimpleProducerConsumerTest extends ProducerConsumerBase {
log.info("-- Exiting {} test --", methodName);
}
- private void receiveAsync(Consumer consumer, int totalMessage, int currentMessage, CountDownLatch latch,
+ private void receiveAsync(Consumer<byte[]> consumer, int totalMessage, int currentMessage, CountDownLatch latch,
final Set<String> consumeMsg, ExecutorService executor) throws PulsarClientException {
if (currentMessage < totalMessage) {
- CompletableFuture<Message> future = consumer.receiveAsync();
+ CompletableFuture<Message<byte[]>> future = consumer.receiveAsync();
future.handle((msg, exception) -> {
if (exception == null) {
// add message to consumer-queue to verify with produced messages
@@ -1061,13 +1023,11 @@ public class SimpleProducerConsumerTest extends ProducerConsumerBase {
}
/**
- * Verify: Consumer stops receiving msg when reach unack-msg limit and
- * starts receiving once acks messages
- * 1. Produce X (600) messages
- * 2. Consumer has receive size (10) and receive message without acknowledging
- * 3. Consumer will stop receiving message after unAckThreshold = 500
- * 4. Consumer acks messages and starts consuming remanining messages
- * This testcase enables checksum sending while producing message and broker verifies the checksum for the message.
+ * Verify: Consumer stops receiving msg when reach unack-msg limit and starts receiving once acks messages 1.
+ * Produce X (600) messages 2. Consumer has receive size (10) and receive message without acknowledging 3. Consumer
+ * will stop receiving message after unAckThreshold = 500 4. Consumer acks messages and starts consuming remanining
+ * messages This testcase enables checksum sending while producing message and broker verifies the checksum for the
+ * message.
*
* @throws Exception
*/
@@ -1082,16 +1042,12 @@ public class SimpleProducerConsumerTest extends ProducerConsumerBase {
final int totalProducedMsgs = 600;
pulsar.getConfiguration().setMaxUnackedMessagesPerConsumer(unAckedMessagesBufferSize);
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setReceiverQueueSize(receiverQueueSize);
- conf.setSubscriptionType(SubscriptionType.Shared);
- Consumer consumer = pulsarClient.subscribe("persistent://my-property/use/my-ns/unacked-topic",
- "subscriber-1", conf);
+ Consumer<byte[]> consumer = pulsarClient.newConsumer()
+ .topic("persistent://my-property/use/my-ns/unacked-topic").subscriptionName("subscriber-1")
+ .receiverQueueSize(receiverQueueSize).subscriptionType(SubscriptionType.Shared).subscribe();
- ProducerConfiguration producerConf = new ProducerConfiguration();
-
- Producer producer = pulsarClient.createProducer("persistent://my-property/use/my-ns/unacked-topic",
- producerConf);
+ Producer<byte[]> producer = pulsarClient.newProducer()
+ .topic("persistent://my-property/use/my-ns/unacked-topic").create();
// (1) Produced Messages
for (int i = 0; i < totalProducedMsgs; i++) {
@@ -1100,8 +1056,8 @@ public class SimpleProducerConsumerTest extends ProducerConsumerBase {
}
// (2) try to consume messages: but will be able to consume number of messages = unAckedMessagesBufferSize
- Message msg = null;
- List<Message> messages = Lists.newArrayList();
+ Message<byte[]> msg = null;
+ List<Message<byte[]>> messages = Lists.newArrayList();
for (int i = 0; i < totalProducedMsgs; i++) {
msg = consumer.receive(1, TimeUnit.SECONDS);
if (msg != null) {
@@ -1146,18 +1102,11 @@ public class SimpleProducerConsumerTest extends ProducerConsumerBase {
}
/**
- * Verify: iteration of
- * a. message receive w/o acking
- * b. stop receiving msg
- * c. ack msgs
- * d. started receiving msgs
+ * Verify: iteration of a. message receive w/o acking b. stop receiving msg c. ack msgs d. started receiving msgs
*
- * 1. Produce total X (1500) messages
- * 2. Consumer consumes messages without acking until stop receiving
- * from broker due to reaching ack-threshold (500)
- * 3. Consumer acks messages after stop getting messages
- * 4. Consumer again tries to consume messages
- * 5. Consumer should be able to complete consuming all 1500 messages in 3 iteration (1500/500)
+ * 1. Produce total X (1500) messages 2. Consumer consumes messages without acking until stop receiving from broker
+ * due to reaching ack-threshold (500) 3. Consumer acks messages after stop getting messages 4. Consumer again tries
+ * to consume messages 5. Consumer should be able to complete consuming all 1500 messages in 3 iteration (1500/500)
*
* @throws Exception
*/
@@ -1174,16 +1123,12 @@ public class SimpleProducerConsumerTest extends ProducerConsumerBase {
// receiver consumes messages in iteration after acknowledging broker
final int totalReceiveIteration = totalProducedMsgs / unAckedMessagesBufferSize;
pulsar.getConfiguration().setMaxUnackedMessagesPerConsumer(unAckedMessagesBufferSize);
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setReceiverQueueSize(receiverQueueSize);
- conf.setSubscriptionType(SubscriptionType.Shared);
- Consumer consumer = pulsarClient.subscribe("persistent://my-property/use/my-ns/unacked-topic",
- "subscriber-1", conf);
-
- ProducerConfiguration producerConf = new ProducerConfiguration();
+ Consumer<byte[]> consumer = pulsarClient.newConsumer()
+ .topic("persistent://my-property/use/my-ns/unacked-topic").subscriptionName("subscriber-1")
+ .receiverQueueSize(receiverQueueSize).subscriptionType(SubscriptionType.Shared).subscribe();
- Producer producer = pulsarClient.createProducer("persistent://my-property/use/my-ns/unacked-topic",
- producerConf);
+ Producer<byte[]> producer = pulsarClient.newProducer()
+ .topic("persistent://my-property/use/my-ns/unacked-topic").create();
// (1) Produced Messages
for (int i = 0; i < totalProducedMsgs; i++) {
@@ -1195,8 +1140,8 @@ public class SimpleProducerConsumerTest extends ProducerConsumerBase {
// (2) Receive Messages
for (int j = 0; j < totalReceiveIteration; j++) {
- Message msg = null;
- List<Message> messages = Lists.newArrayList();
+ Message<byte[]> msg = null;
+ List<Message<byte[]>> messages = Lists.newArrayList();
for (int i = 0; i < totalProducedMsgs; i++) {
msg = consumer.receive(1, TimeUnit.SECONDS);
if (msg != null) {
@@ -1232,7 +1177,6 @@ public class SimpleProducerConsumerTest extends ProducerConsumerBase {
}
}
-
/**
* Verify: Consumer1 which doesn't send ack will not impact Consumer2 which sends ack for consumed message.
*
@@ -1252,18 +1196,13 @@ public class SimpleProducerConsumerTest extends ProducerConsumerBase {
int totalReceiveMessages = 0;
pulsar.getConfiguration().setMaxUnackedMessagesPerConsumer(maxUnackedMessages);
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setReceiverQueueSize(receiverQueueSize);
- conf.setSubscriptionType(SubscriptionType.Shared);
- Consumer consumer1 = pulsarClient.subscribe("persistent://my-property/use/my-ns/unacked-topic",
- "subscriber-1", conf);
- Consumer consumer2 = pulsarClient.subscribe("persistent://my-property/use/my-ns/unacked-topic",
- "subscriber-1", conf);
-
- ProducerConfiguration producerConf = new ProducerConfiguration();
-
- Producer producer = pulsarClient.createProducer("persistent://my-property/use/my-ns/unacked-topic",
- producerConf);
+ ConsumerBuilder<byte[]> consumerBuilder = pulsarClient.newConsumer()
+ .topic("persistent://my-property/use/my-ns/unacked-topic").subscriptionName("subscriber-1")
+ .receiverQueueSize(receiverQueueSize).subscriptionType(SubscriptionType.Shared);
+ Consumer<byte[]> consumer1 = consumerBuilder.subscribe();
+ Consumer<byte[]> consumer2 = consumerBuilder.subscribe();
+ Producer<byte[]> producer = pulsarClient.newProducer()
+ .topic("persistent://my-property/use/my-ns/unacked-topic").create();
// (1) Produced Messages
for (int i = 0; i < totalProducedMsgs; i++) {
@@ -1271,11 +1210,10 @@ public class SimpleProducerConsumerTest extends ProducerConsumerBase {
producer.send(message.getBytes());
}
-
// (2) Consumer1: consume without ack:
// try to consume messages: but will be able to consume number of messages = maxUnackedMessages
- Message msg = null;
- List<Message> messages = Lists.newArrayList();
+ Message<byte[]> msg = null;
+ List<Message<byte[]>> messages = Lists.newArrayList();
for (int i = 0; i < totalProducedMsgs; i++) {
msg = consumer1.receive(1, TimeUnit.SECONDS);
if (msg != null) {
@@ -1348,17 +1286,13 @@ public class SimpleProducerConsumerTest extends ProducerConsumerBase {
final int receiverQueueSize = 20;
final int totalProducedMsgs = 100;
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setReceiverQueueSize(receiverQueueSize);
- conf.setAckTimeout(1, TimeUnit.SECONDS);
- conf.setSubscriptionType(SubscriptionType.Shared);
- ConsumerImpl consumer = (ConsumerImpl) pulsarClient
- .subscribe("persistent://my-property/use/my-ns/unacked-topic", "subscriber-1", conf);
+ ConsumerImpl<byte[]> consumer = (ConsumerImpl<byte[]>) pulsarClient.newConsumer()
+ .topic("persistent://my-property/use/my-ns/unacked-topic").subscriptionName("subscriber-1")
+ .receiverQueueSize(receiverQueueSize).ackTimeout(1, TimeUnit.SECONDS)
+ .subscriptionType(SubscriptionType.Shared).subscribe();
- ProducerConfiguration producerConf = new ProducerConfiguration();
-
- Producer producer = pulsarClient.createProducer("persistent://my-property/use/my-ns/unacked-topic",
- producerConf);
+ Producer<byte[]> producer = pulsarClient.newProducer()
+ .topic("persistent://my-property/use/my-ns/unacked-topic").create();
// (1) Produced Messages
for (int i = 0; i < totalProducedMsgs; i++) {
@@ -1375,7 +1309,7 @@ public class SimpleProducerConsumerTest extends ProducerConsumerBase {
assertEquals(consumer.numMessagesInQueue(), receiverQueueSize);
for (int i = 0; i < totalProducedMsgs; i++) {
- Message msg = consumer.receive(1, TimeUnit.SECONDS);
+ Message<byte[]> msg = consumer.receive(1, TimeUnit.SECONDS);
if (msg != null) {
consumer.acknowledge(msg);
totalReceiveMsg++;
@@ -1409,16 +1343,12 @@ public class SimpleProducerConsumerTest extends ProducerConsumerBase {
final int totalProducedMsgs = 100;
pulsar.getConfiguration().setMaxUnackedMessagesPerConsumer(unAckedMessagesBufferSize);
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setReceiverQueueSize(receiverQueueSize);
- conf.setSubscriptionType(SubscriptionType.Shared);
- ConsumerImpl consumer = (ConsumerImpl) pulsarClient
- .subscribe("persistent://my-property/use/my-ns/unacked-topic", "subscriber-1", conf);
-
- ProducerConfiguration producerConf = new ProducerConfiguration();
+ ConsumerImpl<byte[]> consumer = (ConsumerImpl<byte[]>) pulsarClient.newConsumer()
+ .topic("persistent://my-property/use/my-ns/unacked-topic").subscriptionName("subscriber-1")
+ .receiverQueueSize(receiverQueueSize).subscriptionType(SubscriptionType.Shared).subscribe();
- Producer producer = pulsarClient.createProducer("persistent://my-property/use/my-ns/unacked-topic",
- producerConf);
+ Producer<byte[]> producer = pulsarClient.newProducer()
+ .topic("persistent://my-property/use/my-ns/unacked-topic").create();
// (1) Produced Messages
for (int i = 0; i < totalProducedMsgs; i++) {
@@ -1427,8 +1357,8 @@ public class SimpleProducerConsumerTest extends ProducerConsumerBase {
}
// (2) try to consume messages: but will be able to consume number of messages = unAckedMessagesBufferSize
- Message msg = null;
- List<Message> messages = Lists.newArrayList();
+ Message<byte[]> msg = null;
+ List<Message<byte[]>> messages = Lists.newArrayList();
for (int i = 0; i < totalProducedMsgs; i++) {
msg = consumer.receive(1, TimeUnit.SECONDS);
if (msg != null) {
@@ -1480,22 +1410,20 @@ public class SimpleProducerConsumerTest extends ProducerConsumerBase {
int totalReceiveMessages = 0;
pulsar.getConfiguration().setMaxUnackedMessagesPerConsumer(maxUnackedMessages);
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setReceiverQueueSize(receiverQueueSize);
- conf.setSubscriptionType(SubscriptionType.Shared);
- Consumer consumer1 = pulsarClient.subscribe("persistent://my-property/use/my-ns/unacked-topic",
- "subscriber-1", conf);
+ Consumer<byte[]> consumer1 = pulsarClient.newConsumer()
+ .topic("persistent://my-property/use/my-ns/unacked-topic").subscriptionName("subscriber-1")
+ .receiverQueueSize(receiverQueueSize).subscriptionType(SubscriptionType.Shared).subscribe();
- ProducerConfiguration producerConf = new ProducerConfiguration();
+ ProducerBuilder<byte[]> producerBuidler = pulsarClient.newProducer()
+ .topic("persistent://my-property/use/my-ns/unacked-topic");
if (batchMessageDelayMs != 0) {
- producerConf.setBatchingEnabled(true);
- producerConf.setBatchingMaxPublishDelay(batchMessageDelayMs, TimeUnit.MILLISECONDS);
- producerConf.setBatchingMaxMessages(5);
+ producerBuidler.enableBatching(true);
+ producerBuidler.batchingMaxPublishDelay(batchMessageDelayMs, TimeUnit.MILLISECONDS);
+ producerBuidler.batchingMaxMessages(5);
}
- Producer producer = pulsarClient.createProducer("persistent://my-property/use/my-ns/unacked-topic",
- producerConf);
+ Producer<byte[]> producer = producerBuidler.create();
List<CompletableFuture<MessageId>> futures = Lists.newArrayList();
// (1) Produced Messages
@@ -1508,8 +1436,8 @@ public class SimpleProducerConsumerTest extends ProducerConsumerBase {
// (2) Consumer1: consume without ack:
// try to consume messages: but will be able to consume number of messages = maxUnackedMessages
- Message msg = null;
- List<Message> messages = Lists.newArrayList();
+ Message<byte[]> msg = null;
+ List<Message<byte[]>> messages = Lists.newArrayList();
for (int i = 0; i < totalProducedMsgs; i++) {
msg = consumer1.receive(1, TimeUnit.SECONDS);
if (msg != null) {
@@ -1575,18 +1503,14 @@ public class SimpleProducerConsumerTest extends ProducerConsumerBase {
int totalReceiveMessages = 0;
pulsar.getConfiguration().setMaxUnackedMessagesPerConsumer(maxUnackedMessages);
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setReceiverQueueSize(receiverQueueSize);
- conf.setSubscriptionType(SubscriptionType.Shared);
- Consumer consumer1 = pulsarClient.subscribe("persistent://my-property/use/my-ns/unacked-topic",
- "subscriber-1", conf);
- Consumer consumer2 = pulsarClient.subscribe("persistent://my-property/use/my-ns/unacked-topic",
- "subscriber-1", conf);
-
- ProducerConfiguration producerConf = new ProducerConfiguration();
+ ConsumerBuilder<byte[]> consumerBuilder = pulsarClient.newConsumer()
+ .topic("persistent://my-property/use/my-ns/unacked-topic").subscriptionName("subscriber-1")
+ .receiverQueueSize(receiverQueueSize).subscriptionType(SubscriptionType.Shared);
+ Consumer<byte[]> consumer1 = consumerBuilder.subscribe();
+ Consumer<byte[]> consumer2 = consumerBuilder.subscribe();
- Producer producer = pulsarClient.createProducer("persistent://my-property/use/my-ns/unacked-topic",
- producerConf);
+ Producer<byte[]> producer = pulsarClient.newProducer()
+ .topic("persistent://my-property/use/my-ns/unacked-topic").create();
// (1) Produced Messages
for (int i = 0; i < totalProducedMsgs; i++) {
@@ -1594,11 +1518,10 @@ public class SimpleProducerConsumerTest extends ProducerConsumerBase {
producer.send(message.getBytes());
}
-
// (2) Consumer1: consume without ack:
// try to consume messages: but will be able to consume number of messages = maxUnackedMessages
- Message msg = null;
- List<Message> messages = Lists.newArrayList();
+ Message<byte[]> msg = null;
+ List<Message<byte[]>> messages = Lists.newArrayList();
for (int i = 0; i < totalProducedMsgs; i++) {
msg = consumer1.receive(1, TimeUnit.SECONDS);
if (msg != null) {
@@ -1610,7 +1533,7 @@ public class SimpleProducerConsumerTest extends ProducerConsumerBase {
}
}
- assertEquals(messages.size(), maxUnackedMessages); //consumer1
+ assertEquals(messages.size(), maxUnackedMessages); // consumer1
// (3) ack for all UnackedMessages from consumer2
messages.forEach(m -> {
@@ -1661,26 +1584,24 @@ public class SimpleProducerConsumerTest extends ProducerConsumerBase {
log.info("-- Starting {} test --", methodName);
final int totalMsg = 10;
- ConsumerConfiguration conf = new ConsumerConfiguration();
- conf.setSubscriptionType(SubscriptionType.Exclusive);
- Consumer consumer = pulsarClient.subscribe("persistent://my-property/use/my-ns/my-topic1", "my-subscriber-name",
- conf);
+ Consumer<byte[]> consumer = pulsarClient.newConsumer().topic("persistent://my-property/use/my-ns/my-topic1")
+ .subscriptionName("my-subscriber-name").subscribe();
- ProducerConfiguration producerConf = new ProducerConfiguration();
+ ProducerBuilder<byte[]> producerBuilder = pulsarClient.newProducer()
+ .topic("persistent://my-property/use/my-ns/my-topic1");
final int batchMessageDelayMs = 300;
if (batchMessageDelayMs != 0) {
- producerConf.setBatchingEnabled(true);
- producerConf.setBatchingMaxPublishDelay(batchMessageDelayMs, TimeUnit.MILLISECONDS);
- producerConf.setBatchingMaxMessages(5);
+ producerBuilder.enableBatching(true).batchingMaxPublishDelay(batchMessageDelayMs, TimeUnit.MILLISECONDS)
+ .batchingMaxMessages(5);
}
- Producer producer = pulsarClient.createProducer("persistent://my-property/use/my-ns/my-topic1", producerConf);
+ Producer<byte[]> producer = producerBuilder.create();
... 7182 lines suppressed ...
--
To stop receiving notification emails like this one, please contact
mmerli@apache.org.