The Pulsar Python client library is a wrapper over the existing C++ client library and exposes all of the same features. You can find the code in the python
subdirectory of the C++ client code.
You can install the pulsar-client
library either via PyPi, using pip, or by building the library from source.
To install the pulsar-client
library as a pre-built package using the pip package manager:
$ pip install pulsar-client=={{pulsar:version_number}}
Installation via PyPi is available for the following Python versions:
Platform | Supported Python versions |
---|---|
MacOS 10.12 (Sierra) and 10.13 (High Sierra) | 2.7, 3.6 |
Linux | 2.7, 3.3, 3.4, 3.5, 3.6 |
To install the pulsar-client
library by building from source, follow these instructions and compile the Pulsar C++ client library. That will also build the Python binding for the library.
To install the built Python bindings:
$ git clone https://github.com/apache/pulsar $ cd pulsar/pulsar-client-cpp/python $ sudo python setup.py install
The complete Python API reference is available at api/python.
Below you'll find a variety of Python code examples for the pulsar-client
library.
This creates a Python producer for the my-topic
topic and send 10 messages on that topic:
import pulsar client = pulsar.Client('pulsar://localhost:6650') producer = client.create_producer('my-topic') for i in range(10): producer.send(('Hello-%d' % i).encode('utf-8')) client.close()
This creates a consumer with the my-subscription
subscription on the my-topic
topic, listen for incoming messages, print the content and ID of messages that arrive, and acknowledge each message to the Pulsar broker:
import pulsar client = pulsar.Client('pulsar://localhost:6650') consumer = client.subscribe('my-topic', 'my-subscription') while True: msg = consumer.receive() print("Received message '{}' id='{}'".format(msg.data(), msg.message_id())) consumer.acknowledge(msg) client.close()
You can use the Pulsar Python API to use the Pulsar reader interface. Here's an example:
# MessageId taken from a previously fetched message msg_id = msg.message_id() reader = client.create_reader('my-topic', msg_id) while True: msg = reader.read_next() print("Received message '{}' id='{}'".format(msg.data(), msg.message_id())) # No acknowledgment