lsst.ts.salkafka

Forward DDS samples from one or more SAL components to a Kafka broker, to populate databases.

Using lsst.ts.salkafka

Run command-line script run_salkafka_producer.py to forward DDS samples from the specified SAL comonents to Kafka. Run with --help for information about the arguments. The script logs to stderr. You may run as many instances as you like.

To stop a producer, terminate its process or use ctrl-C.

Until performance is tested, my best guess is that one producer should forward no more than 1000 messages per second, on average. This is based on the fact that ts_salobj can send and receive roughly 5000 topics/second using one process on a modern iMac. This suggests that it should be fine to use one producer for many SAL components as long as none of them is very chatty.

Requirements

Third party packages (all pip-installable):

  • aiohttp
  • aiokafka
  • confluent-kafka
  • kafkit

LSST packages:

  • ts_salobj
  • ts_idl
  • Built IDL files for all components you want to monitor.

Contributing

lsst.ts.salkafka is developed at https://github.com/lsst-ts/ts_salkafka. You can find Jira issues for this module under the ts_salkafka component.

Python API reference

lsst.ts.salkafka Package

Functions

make_avro_schema(topic) Make an Avro schema for a given topic.
make_run_salkafka_producer_parser() Make an argument parser for run_salkafka_producer.
run_salkafka_producer() Run a SAL/Kafka producer for one or more SAL components.

Classes

ComponentProducer(domain, name, kafka_info) Produce Kafka messages from DDS samples for one SAL component.
KafkaInfo(broker_url, registry_url, …) Information and clients for using Kafka.
TopicProducer(topic, kafka_info, log) Produce Kafka messages from DDS samples for one topic.