Pipeline management =================== Piplines describe who can send a message and how it is to be processed. They are managed via the ``pipeline`` command of the :ref:`xbusctl ` program. Publishing a new version of a pipeline -------------------------------------- - Update or create a yaml file with the pipeline definition ('pipeline.yml' below). - Send it to Xbus via the ``pipeline save`` command of the :ref:`xbusctl ` program: .. code-block:: bash xbusct pipeline save a_name 1.0 pipeline.yml A version can be updated as long as its status is 'draft'. - Activate the pipeline (will disable older versions) .. code-block:: bash xbusct pipeline status a_name 1.0 --active Example pipeline descriptions ----------------------------- 1. Simple pipeline that sends any ``test_event`` to ``xbus-example-consumer``: .. code-block:: yaml nodes: - id: emitter sourcematch: eventtypes: - test_event inputs: [] outputs: - default - id: consumer type: consumer actorids: [] roles: - xbus-example-consumer rolebroadcast: true sourcematch: null inputs: - default outputs: [] edges: - emitter.default->consumer.default 2. Same pipeline but with a matching by role (only emitters registered to the specified role may send a ``test_event``) - note the ``rolebroadcast`` parameter being set to ``true`` in this case: .. code-block:: yaml nodes: - id: emitter roles: - xbus-example-emitter rolebroadcast: true sourcematch: eventtypes: - test_event inputs: [] outputs: - default - id: consumer type: consumer actorids: [] roles: - xbus-example-consumer rolebroadcast: true sourcematch: null inputs: - default outputs: [] edges: - emitter.default->consumer.default 3. Same as the first pipeline but with an explicit emitter, specified by name: .. code-block:: yaml nodes: - id: emitter type: emitter actorids: [] roles: [] rolebroadcast: false sourcematch: eventtypes: - test_event inputs: [] outputs: - default - id: consumer type: consumer actorids: [] roles: - xbus-example-consumer rolebroadcast: true sourcematch: null inputs: - default outputs: [] edges: - emitter.default->consumer.default