Apache Pulsar es una plataforma de transmisión y mensajería distribuida cloud-native creada originalmente por Yahoo! y ahora un proyecto de top-level de Apache Software Foundation
Las características clave de Pulsar son :
- Soporte nativo para múltiples clústeres en una instancia de Pulsar, con replicación geográfica perfecta de mensajes entre clústeres.
- Latencia de publicación y de extremo a extremo muy baja.
- Escalabilidad perfecta a más de un millón de temas o topicos.
- Una API de cliente simple y que se puede implementar en Java, Go, Python y C ++.
- Múltiples tipos de suscripción (exclusiva, compartida y conmutación por error) para temas.
- Entrega de mensajes garantizada con almacenamiento de mensajes persistente proporcionado por Apache BookKeeper.
- Pulsar Functions, un framework liviano sin servidor, ofrece la capacidad de procesamiento de flujar de datos.
- Pulsar IO, es un framework de conexión que se basa en Pulsar Functions, hace que sea más fácil mover datos dentro y fuera de Apache Pulsar.
- El almacenamiento por niveles.
Si queremos levantar Pulsar con Docker es tan fácil como hacer :
$ docker run -it \
-p 6650:6650 \
-p 8080:8080 \
--mount source=pulsardata,target=/pulsar/data \
--mount source=pulsarconf,target=/pulsar/conf \
apachepulsar/pulsar:2.8.1 \
bin/pulsar standalone
Veamos un ejemplo en Python, primero debemos instalar el cliente de pulsar :
$ pip install pulsar-client
Y luego podemos hacer un cliente productor :
import pulsar
client = pulsar.Client('pulsar://localhost:6650')
producer = client.create_producer('my-topic')
for i in range(10):
producer.send(('hello-pulsar-%d' % i).encode('utf-8'))
client.close()
Y luego un consumidor :
import pulsar
client = pulsar.Client('pulsar://localhost:6650')
consumer = client.subscribe('my-topic',
subscription_name='my-sub')
while True:
msg = consumer.receive()
print("Received message: '%s'" % msg.data())
consumer.acknowledge(msg)
client.close()
Y listo!!
Dejo link: https://pulsar.apache.org/