Overview
To meet the needs of different scenarios, Pulsar supports four subscription modes: Exclusive, Shared, Failover, and Key_Shared.
1. Exclusive mode (default): A subscription can only be associated with one consumer, and only this consumer can receive all messages from the topic. If this consumer can not run normally, consumption will be stopped.
2. Shared mode: Messages are distributed to different consumers through a round robin mechanism (customizable), and each message is sent to only one consumer. When a consumer disconnects, all messages sent to him that have not been acknowledged will be reallocated and distributed to other active consumers.
3. Failover mode: When there are multiple consumers, they are ordered lexicographically, and the first consumer is initialized as the sole receiver of messages. When the consumer disconnects from the system, all messages (both unacknowledged and new ones) are distributed to the next consumer in the queue.
4. Key_Shared mode: When there are multiple consumers, messages are distributed based on their keys. Messages with the same key are distributed to the same consumer.
This document uses the Demo provided on the official website as an example to introduce the features and usage of the Shared subscription mode.
Directions
Step 1. Creating a Pulsar Resource in the Console
2. In the left sidebar, select the Topic Management tab, and check the created cluster and namespace for the current cluster and namespace.
3. Click Create, enter the Topic name and description, keep the other options as default, click Save, and create a topic.
4. Click Add Subscription in the operation column to create two subscription relationships for the created Topic.
5. Click More > View Subscription/Consumer in the operation column to see the created subscriptions.
Step 2. Downloading the Demo and Configuring the Related Parameters
2. Modify the Constant.java parameters.
|
SERVICE_URL | Cluster access address, which can be viewed and copied from the Console Cluster Management Page |
AUTHENTICATION | Role key, which can be copied from the Role Management |
Step 3. Producing Messages
1. Go to the /simple directory and modify the SimpleProducer.java parameters.
topic: Enter the name of the created topic3. You need to provide the complete path, which is persistent://clusterid/namespace/Topic. The parts clusterid/namespace/topic can be directly copied from the Topic Management Page in the console.
2. Compile and run the SimpleProducer.java program to send messages. The result is as follows: you can see that the producer has sent 10 messages to the topic.
Step 4. Consuming Messages
1. Go to the /submodule directory and modify the SharedConsumer1.java and SharedConsumer2.java program parameters.
topic: Enter the name of the created topic. You need to provide the complete path, which is persistent://clusterid/namespace/Topic. The parts clusterid/namespace/topic
can be directly copied from the Topic Management Page in the console.
.subscriptionName: Enter the subscription name for the topic, which can be viewed in the Topic Consumers interface. For SharedConsumer1, enter the subscription name sub1, and for SharedConsumer2, enter the subscription name sub2.
2. Compile and run the Message Retry Program, SharedConsumer1.java, and SharedConsumer2.java. The result is as follows:
Was this page helpful?