You can use the Python {pulsar-short} client with {product} to produce and consume messages.
For a complete source code example, see the {product} Examples repository.
-
A supported Python version:
-
For Linux, versions 3.4 to 3.7 are supported
-
For macOS, version 3.7 is supported
-
-
An {pulsar-reg} topic in {product}
-
A text editor or IDE
-
Create a folder for a new Python project.
-
In your new directory, install the {pulsar-short} client library with pip:
mkdir SimpleProducerConsumer && cd SimpleProducerConsumer touch index.py pip install pulsar-client==2.10
-
Create an
index.pyfile containing the following code. This code creates a {pulsar-short} client instance with the topic URL and token authentication.index.pyimport pulsar import time serviceUrl = "<REPLACE_WITH_SERVICE_URL>"; pulsarToken = "<REPLACE_WITH_PULSAR_TOKEN>"; tenantName = "<REPLACE_WITH_TENANT_NAME>"; namespace = "<REPLACE_WITH_NAMESPACE>"; topicName = "<REPLACE_WITH_TOPIC>"; topic = "persistent://{0}/{1}/{2}".format(tenantName, namespace, topicName) client = pulsar.Client(serviceUrl, authentication=pulsar.AuthenticationToken(pulsarToken))
This script is intentionally incomplete. Your IDE might show errors until you complete the next steps.
-
Provide values for the following variables:
ROOT:partial$client-variables-table.adoc
-
Use the client to create a producer:
index.pyproducer = client.create_producer(topic)
-
Send a message:
index.pyproducer.send('Hello World'.encode('utf-8'))
-
Use the Python client instance to create a consumer subscription to the same topic that you sent a message to:
index.pyconsumer = client.subscribe(topic, 'my-subscription')
-
Iterate through messages and write their data:
index.pywaitingForMsg = True while waitingForMsg: try: msg = consumer.receive(2000) print("Received message '{}' id='{}'".format(msg.data(), msg.message_id())) # Acknowledging the message to remove from message backlog consumer.acknowledge(msg) waitingForMsg = False except: print("Still waiting for a message..."); time.sleep(1)
-
Clean up:
client.close()
In your Python project directory, run the script:
python3 index.pyThe output includes a lot of logs.
Received message confirms that the script succeeded:
Received message 'Hello World' id='(422529,5,-1,0)'