{
  "bundles": [
    {
      "@type": "NXBundle",
      "artifactId": "nuxeo-runtime-stream",
      "artifactVersion": "2023.9.10",
      "bundleGroup": {
        "@type": "NXBundleGroup",
        "bundleIds": [
          "org.nuxeo.connect.standalone",
          "org.nuxeo.launcher.commons",
          "org.nuxeo.osgi",
          "org.nuxeo.runtime",
          "org.nuxeo.runtime.aws",
          "org.nuxeo.runtime.cluster",
          "org.nuxeo.runtime.datasource",
          "org.nuxeo.runtime.jtajca",
          "org.nuxeo.runtime.kv",
          "org.nuxeo.runtime.management",
          "org.nuxeo.runtime.metrics",
          "org.nuxeo.runtime.migration",
          "org.nuxeo.runtime.mongodb",
          "org.nuxeo.runtime.nuxeo-runtime-deploy",
          "org.nuxeo.runtime.pubsub",
          "org.nuxeo.runtime.reload",
          "org.nuxeo.runtime.stream"
        ],
        "hierarchyPath": "/grp:org.nuxeo.runtime",
        "id": "grp:org.nuxeo.runtime",
        "name": "org.nuxeo.runtime",
        "parentIds": [],
        "readmes": [],
        "version": "2023.9"
      },
      "bundleId": "org.nuxeo.runtime.stream",
      "components": [
        {
          "@type": "NXComponent",
          "componentClass": "org.nuxeo.runtime.kafka.KafkaConfigServiceImpl",
          "declaredStartOrder": -600,
          "documentation": "\n    The component allows to register Kafka configuration and producer and consumer properties.\n  \n",
          "documentationHtml": "<p>\nThe component allows to register Kafka configuration and producer and consumer properties.\n</p><p></p>",
          "extensionPoints": [
            {
              "@type": "NXExtensionPoint",
              "componentId": "org.nuxeo.runtime.stream.kafka.service",
              "descriptors": [
                "org.nuxeo.runtime.kafka.KafkaConfigDescriptor"
              ],
              "documentationHtml": "",
              "hierarchyPath": "/grp:org.nuxeo.runtime/org.nuxeo.runtime.stream/org.nuxeo.runtime.stream.kafka.service/ExtensionPoints/org.nuxeo.runtime.stream.kafka.service--kafkaConfig",
              "id": "org.nuxeo.runtime.stream.kafka.service--kafkaConfig",
              "label": "kafkaConfig (org.nuxeo.runtime.stream.kafka.service)",
              "name": "kafkaConfig",
              "version": "2023.9.10"
            }
          ],
          "extensions": [],
          "hierarchyPath": "/grp:org.nuxeo.runtime/org.nuxeo.runtime.stream/org.nuxeo.runtime.stream.kafka.service",
          "name": "org.nuxeo.runtime.stream.kafka.service",
          "requirements": [],
          "resolutionOrder": 822,
          "services": [
            {
              "@type": "NXService",
              "componentId": "org.nuxeo.runtime.stream.kafka.service",
              "hierarchyPath": "/grp:org.nuxeo.runtime/org.nuxeo.runtime.stream/org.nuxeo.runtime.stream.kafka.service/Services/org.nuxeo.runtime.kafka.KafkaConfigService",
              "id": "org.nuxeo.runtime.kafka.KafkaConfigService",
              "overriden": false,
              "version": "2023.9.10"
            }
          ],
          "startOrder": 7,
          "version": "2023.9.10",
          "xmlFileContent": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<component name=\"org.nuxeo.runtime.stream.kafka.service\" version=\"1.0\">\n\n  <documentation>\n    The component allows to register Kafka configuration and producer and consumer properties.\n  </documentation>\n\n  <implementation class=\"org.nuxeo.runtime.kafka.KafkaConfigServiceImpl\" />\n\n  <service>\n    <provide interface=\"org.nuxeo.runtime.kafka.KafkaConfigService\" />\n  </service>\n\n  <extension-point name=\"kafkaConfig\">\n    <object class=\"org.nuxeo.runtime.kafka.KafkaConfigDescriptor\" />\n  </extension-point>\n\n</component>\n",
          "xmlFileName": "/OSGI-INF/kafka-config-service.xml",
          "xmlPureComponent": false
        },
        {
          "@type": "NXComponent",
          "componentClass": "org.nuxeo.runtime.stream.StreamServiceImpl",
          "declaredStartOrder": -590,
          "documentation": "\n    The component allows to register log configurations and Log and Stream processors.\n  \n",
          "documentationHtml": "<p>\nThe component allows to register log configurations and Log and Stream processors.\n</p><p></p>",
          "extensionPoints": [
            {
              "@type": "NXExtensionPoint",
              "componentId": "org.nuxeo.runtime.stream.service",
              "descriptors": [
                "org.nuxeo.runtime.stream.LogConfigDescriptor"
              ],
              "documentationHtml": "",
              "hierarchyPath": "/grp:org.nuxeo.runtime/org.nuxeo.runtime.stream/org.nuxeo.runtime.stream.service/ExtensionPoints/org.nuxeo.runtime.stream.service--logConfig",
              "id": "org.nuxeo.runtime.stream.service--logConfig",
              "label": "logConfig (org.nuxeo.runtime.stream.service)",
              "name": "logConfig",
              "version": "2023.9.10"
            },
            {
              "@type": "NXExtensionPoint",
              "componentId": "org.nuxeo.runtime.stream.service",
              "descriptors": [
                "org.nuxeo.runtime.stream.StreamProcessorDescriptor"
              ],
              "documentationHtml": "",
              "hierarchyPath": "/grp:org.nuxeo.runtime/org.nuxeo.runtime.stream/org.nuxeo.runtime.stream.service/ExtensionPoints/org.nuxeo.runtime.stream.service--streamProcessor",
              "id": "org.nuxeo.runtime.stream.service--streamProcessor",
              "label": "streamProcessor (org.nuxeo.runtime.stream.service)",
              "name": "streamProcessor",
              "version": "2023.9.10"
            }
          ],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.runtime.stream.service--streamProcessor",
              "hierarchyPath": "/grp:org.nuxeo.runtime/org.nuxeo.runtime.stream/org.nuxeo.runtime.stream.service/Contributions/org.nuxeo.runtime.stream.service--streamProcessor",
              "id": "org.nuxeo.runtime.stream.service--streamProcessor",
              "registrationOrder": 0,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.runtime.stream.service",
                "name": "org.nuxeo.runtime.stream.service",
                "type": "service"
              },
              "version": "2023.9.10",
              "xml": "<extension point=\"streamProcessor\" target=\"org.nuxeo.runtime.stream.service\">\n    <streamProcessor class=\"org.nuxeo.runtime.stream.StreamMetricsProcessor\" enabled=\"true\" name=\"metrics\">\n      <!-- To handle a MSK rolling upgrade we need 30min retries -->\n      <policy continueOnFailure=\"false\" delay=\"15s\" maxDelay=\"120s\" maxRetries=\"18\" name=\"default\"/>\n      <stream codec=\"avro\" name=\"input/null\" partitions=\"1\"/>\n      <computation concurrency=\"1\" name=\"stream/metrics\"/>\n    </streamProcessor>\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo.runtime/org.nuxeo.runtime.stream/org.nuxeo.runtime.stream.service",
          "name": "org.nuxeo.runtime.stream.service",
          "requirements": [],
          "resolutionOrder": 823,
          "services": [
            {
              "@type": "NXService",
              "componentId": "org.nuxeo.runtime.stream.service",
              "hierarchyPath": "/grp:org.nuxeo.runtime/org.nuxeo.runtime.stream/org.nuxeo.runtime.stream.service/Services/org.nuxeo.runtime.stream.StreamService",
              "id": "org.nuxeo.runtime.stream.StreamService",
              "overriden": false,
              "version": "2023.9.10"
            }
          ],
          "startOrder": 8,
          "version": "2023.9.10",
          "xmlFileContent": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<component name=\"org.nuxeo.runtime.stream.service\" version=\"1.0\">\n\n  <documentation>\n    The component allows to register log configurations and Log and Stream processors.\n  </documentation>\n\n  <implementation class=\"org.nuxeo.runtime.stream.StreamServiceImpl\" />\n\n  <service>\n    <provide interface=\"org.nuxeo.runtime.stream.StreamService\" />\n  </service>\n\n  <extension-point name=\"logConfig\">\n    <object class=\"org.nuxeo.runtime.stream.LogConfigDescriptor\" />\n  </extension-point>\n\n  <extension-point name=\"streamProcessor\">\n    <object class=\"org.nuxeo.runtime.stream.StreamProcessorDescriptor\" />\n  </extension-point>\n\n  <extension point=\"streamProcessor\" target=\"org.nuxeo.runtime.stream.service\">\n    <streamProcessor name=\"metrics\" class=\"org.nuxeo.runtime.stream.StreamMetricsProcessor\" enabled=\"${metrics.streams.enabled:=false}\">\n      <!-- To handle a MSK rolling upgrade we need 30min retries -->\n      <policy name=\"default\" maxRetries=\"18\" delay=\"15s\" maxDelay=\"120s\" continueOnFailure=\"false\" />\n      <stream name=\"input/null\" partitions=\"1\" codec=\"avro\" />\n      <computation name=\"stream/metrics\" concurrency=\"1\" />\n    </streamProcessor>\n  </extension>\n\n</component>\n",
          "xmlFileName": "/OSGI-INF/stream-service.xml",
          "xmlPureComponent": false
        },
        {
          "@type": "NXComponent",
          "documentationHtml": "",
          "extensionPoints": [],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.core.management.CoreManagementComponent--probes",
              "hierarchyPath": "/grp:org.nuxeo.runtime/org.nuxeo.runtime.stream/org.nuxeo.runtime.stream.service.managment.contrib/Contributions/org.nuxeo.runtime.stream.service.managment.contrib--probes",
              "id": "org.nuxeo.runtime.stream.service.managment.contrib--probes",
              "registrationOrder": 5,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.core.management.CoreManagementComponent",
                "name": "org.nuxeo.ecm.core.management.CoreManagementComponent",
                "type": "service"
              },
              "version": "2023.9.10",
              "xml": "<extension point=\"probes\" target=\"org.nuxeo.ecm.core.management.CoreManagementComponent\">\n    <probe class=\"org.nuxeo.runtime.stream.StreamProbe\" name=\"streamStatus\">\n      <label>Stream probe</label>\n    </probe>\n  </extension>"
            },
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.core.management.CoreManagementComponent--healthCheck",
              "hierarchyPath": "/grp:org.nuxeo.runtime/org.nuxeo.runtime.stream/org.nuxeo.runtime.stream.service.managment.contrib/Contributions/org.nuxeo.runtime.stream.service.managment.contrib--healthCheck",
              "id": "org.nuxeo.runtime.stream.service.managment.contrib--healthCheck",
              "registrationOrder": 4,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.core.management.CoreManagementComponent",
                "name": "org.nuxeo.ecm.core.management.CoreManagementComponent",
                "type": "service"
              },
              "version": "2023.9.10",
              "xml": "<extension point=\"healthCheck\" target=\"org.nuxeo.ecm.core.management.CoreManagementComponent\">\n    <probe enabled=\"true\" name=\"streamStatus\"/>\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo.runtime/org.nuxeo.runtime.stream/org.nuxeo.runtime.stream.service.managment.contrib",
          "name": "org.nuxeo.runtime.stream.service.managment.contrib",
          "requirements": [],
          "resolutionOrder": 831,
          "services": [],
          "startOrder": 724,
          "version": "2023.9.10",
          "xmlFileContent": "<?xml version=\"1.0\"?>\n<component name=\"org.nuxeo.runtime.stream.service.managment.contrib\">\n\n  <extension target=\"org.nuxeo.ecm.core.management.CoreManagementComponent\" point=\"probes\">\n    <probe name=\"streamStatus\" class=\"org.nuxeo.runtime.stream.StreamProbe\">\n      <label>Stream probe</label>\n    </probe>\n  </extension>\n\n  <extension target=\"org.nuxeo.ecm.core.management.CoreManagementComponent\" point=\"healthCheck\">\n    <probe name=\"streamStatus\" enabled=\"${nuxeo.stream.health.check.enabled:=true}\" />\n  </extension>\n\n</component>\n",
          "xmlFileName": "/OSGI-INF/stream-management-contrib.xml",
          "xmlPureComponent": true
        },
        {
          "@type": "NXComponent",
          "componentClass": "org.nuxeo.runtime.avro.AvroComponent",
          "declaredStartOrder": -600,
          "documentation": "\n    The Avro component.\n    It provides services\n    - that allow to register and retrieve schemas\n    - that allow to create Avro schemas from custom types\n    - that allow to map Avro records from/to custom types\n  \n",
          "documentationHtml": "<p>\nThe Avro component.\nIt provides services\n- that allow to register and retrieve schemas\n- that allow to create Avro schemas from custom types\n- that allow to map Avro records from/to custom types\n</p><p></p>",
          "extensionPoints": [
            {
              "@type": "NXExtensionPoint",
              "componentId": "org.nuxeo.runtime.avro",
              "descriptors": [
                "org.nuxeo.runtime.avro.AvroSchemaDescriptor"
              ],
              "documentation": "\n      Allows to register an Avro schema file with a name.\n    \n",
              "documentationHtml": "<p>\nAllows to register an Avro schema file with a name.\n</p><p></p>",
              "hierarchyPath": "/grp:org.nuxeo.runtime/org.nuxeo.runtime.stream/org.nuxeo.runtime.avro/ExtensionPoints/org.nuxeo.runtime.avro--schema",
              "id": "org.nuxeo.runtime.avro--schema",
              "label": "schema (org.nuxeo.runtime.avro)",
              "name": "schema",
              "version": "2023.9.10"
            },
            {
              "@type": "NXExtensionPoint",
              "componentId": "org.nuxeo.runtime.avro",
              "descriptors": [
                "org.nuxeo.runtime.avro.AvroSchemaFactoryDescriptor"
              ],
              "documentation": "\n      Allows to register an Avro Factory implementation dedicated to a custom type.\n    \n",
              "documentationHtml": "<p>\nAllows to register an Avro Factory implementation dedicated to a custom type.\n</p><p></p>",
              "hierarchyPath": "/grp:org.nuxeo.runtime/org.nuxeo.runtime.stream/org.nuxeo.runtime.avro/ExtensionPoints/org.nuxeo.runtime.avro--factory",
              "id": "org.nuxeo.runtime.avro--factory",
              "label": "factory (org.nuxeo.runtime.avro)",
              "name": "factory",
              "version": "2023.9.10"
            },
            {
              "@type": "NXExtensionPoint",
              "componentId": "org.nuxeo.runtime.avro",
              "descriptors": [
                "org.nuxeo.runtime.avro.AvroReplacementDescriptor"
              ],
              "documentation": "\n      Allows to register a replacement scheme for any string not supported by Avro.\n    \n",
              "documentationHtml": "<p>\nAllows to register a replacement scheme for any string not supported by Avro.\n</p><p></p>",
              "hierarchyPath": "/grp:org.nuxeo.runtime/org.nuxeo.runtime.stream/org.nuxeo.runtime.avro/ExtensionPoints/org.nuxeo.runtime.avro--replacement",
              "id": "org.nuxeo.runtime.avro--replacement",
              "label": "replacement (org.nuxeo.runtime.avro)",
              "name": "replacement",
              "version": "2023.9.10"
            },
            {
              "@type": "NXExtensionPoint",
              "componentId": "org.nuxeo.runtime.avro",
              "descriptors": [
                "org.nuxeo.runtime.avro.AvroMapperDescriptor"
              ],
              "documentation": "\n      Allows to register an Avro Mapper implementation dedicated to a custom type.\n    \n",
              "documentationHtml": "<p>\nAllows to register an Avro Mapper implementation dedicated to a custom type.\n</p><p></p>",
              "hierarchyPath": "/grp:org.nuxeo.runtime/org.nuxeo.runtime.stream/org.nuxeo.runtime.avro/ExtensionPoints/org.nuxeo.runtime.avro--mapper",
              "id": "org.nuxeo.runtime.avro--mapper",
              "label": "mapper (org.nuxeo.runtime.avro)",
              "name": "mapper",
              "version": "2023.9.10"
            }
          ],
          "extensions": [],
          "hierarchyPath": "/grp:org.nuxeo.runtime/org.nuxeo.runtime.stream/org.nuxeo.runtime.avro",
          "name": "org.nuxeo.runtime.avro",
          "requirements": [],
          "resolutionOrder": 832,
          "services": [
            {
              "@type": "NXService",
              "componentId": "org.nuxeo.runtime.avro",
              "hierarchyPath": "/grp:org.nuxeo.runtime/org.nuxeo.runtime.stream/org.nuxeo.runtime.avro/Services/org.apache.avro.message.SchemaStore",
              "id": "org.apache.avro.message.SchemaStore",
              "overriden": false,
              "version": "2023.9.10"
            },
            {
              "@type": "NXService",
              "componentId": "org.nuxeo.runtime.avro",
              "hierarchyPath": "/grp:org.nuxeo.runtime/org.nuxeo.runtime.stream/org.nuxeo.runtime.avro/Services/org.nuxeo.runtime.avro.AvroService",
              "id": "org.nuxeo.runtime.avro.AvroService",
              "overriden": false,
              "version": "2023.9.10"
            }
          ],
          "startOrder": 5,
          "version": "2023.9.10",
          "xmlFileContent": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<component name=\"org.nuxeo.runtime.avro\" version=\"1.0\">\n\n  <documentation>\n    The Avro component.\n    It provides services\n    - that allow to register and retrieve schemas\n    - that allow to create Avro schemas from custom types\n    - that allow to map Avro records from/to custom types\n  </documentation>\n\n  <implementation class=\"org.nuxeo.runtime.avro.AvroComponent\" />\n\n  <service>\n    <provide interface=\"org.apache.avro.message.SchemaStore\" />\n    <provide interface=\"org.nuxeo.runtime.avro.AvroService\" />\n  </service>\n\n  <extension-point name=\"schema\">\n    <documentation>\n      Allows to register an Avro schema file with a name.\n    </documentation>\n    <object class=\"org.nuxeo.runtime.avro.AvroSchemaDescriptor\" />\n  </extension-point>\n\n  <extension-point name=\"factory\">\n    <documentation>\n      Allows to register an Avro Factory implementation dedicated to a custom type.\n    </documentation>\n    <object class=\"org.nuxeo.runtime.avro.AvroSchemaFactoryDescriptor\" />\n  </extension-point>\n\n  <extension-point name=\"replacement\">\n    <documentation>\n      Allows to register a replacement scheme for any string not supported by Avro.\n    </documentation>\n    <object class=\"org.nuxeo.runtime.avro.AvroReplacementDescriptor\" />\n  </extension-point>\n\n  <extension-point name=\"mapper\">\n    <documentation>\n      Allows to register an Avro Mapper implementation dedicated to a custom type.\n    </documentation>\n    <object class=\"org.nuxeo.runtime.avro.AvroMapperDescriptor\" />\n  </extension-point>\n\n</component>\n",
          "xmlFileName": "/OSGI-INF/avro-service.xml",
          "xmlPureComponent": false
        },
        {
          "@type": "NXComponent",
          "componentClass": "org.nuxeo.runtime.codec.CodecServiceImpl",
          "declaredStartOrder": -600,
          "documentation": "\n    The component allows you to register a Codec to encode records.\n  \n",
          "documentationHtml": "<p>\nThe component allows you to register a Codec to encode records.\n</p><p></p>",
          "extensionPoints": [
            {
              "@type": "NXExtensionPoint",
              "componentId": "org.nuxeo.runtime.codec.service",
              "descriptors": [
                "org.nuxeo.runtime.codec.CodecDescriptor"
              ],
              "documentationHtml": "",
              "hierarchyPath": "/grp:org.nuxeo.runtime/org.nuxeo.runtime.stream/org.nuxeo.runtime.codec.service/ExtensionPoints/org.nuxeo.runtime.codec.service--codec",
              "id": "org.nuxeo.runtime.codec.service--codec",
              "label": "codec (org.nuxeo.runtime.codec.service)",
              "name": "codec",
              "version": "2023.9.10"
            }
          ],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.runtime.codec.service--codec",
              "hierarchyPath": "/grp:org.nuxeo.runtime/org.nuxeo.runtime.stream/org.nuxeo.runtime.codec.service/Contributions/org.nuxeo.runtime.codec.service--codec",
              "id": "org.nuxeo.runtime.codec.service--codec",
              "registrationOrder": 0,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.runtime.codec.service",
                "name": "org.nuxeo.runtime.codec.service",
                "type": "service"
              },
              "version": "2023.9.10",
              "xml": "<extension point=\"codec\" target=\"org.nuxeo.runtime.codec.service\">\n    <codec class=\"org.nuxeo.runtime.codec.NoCodecFactory\" name=\"legacy\"/>\n    <codec class=\"org.nuxeo.runtime.codec.SerializableCodecFactory\" name=\"java\"/>\n    <codec class=\"org.nuxeo.runtime.codec.AvroCodecFactory\" name=\"avro\">\n      <option name=\"encoding\">message</option>\n    </codec>\n    <codec class=\"org.nuxeo.runtime.codec.AvroCodecFactory\" name=\"avroBinary\">\n      <option name=\"encoding\">binary</option>\n    </codec>\n    <codec class=\"org.nuxeo.runtime.codec.AvroCodecFactory\" name=\"avroJson\">\n      <option name=\"encoding\">json</option>\n    </codec>\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo.runtime/org.nuxeo.runtime.stream/org.nuxeo.runtime.codec.service",
          "name": "org.nuxeo.runtime.codec.service",
          "requirements": [],
          "resolutionOrder": 833,
          "services": [
            {
              "@type": "NXService",
              "componentId": "org.nuxeo.runtime.codec.service",
              "hierarchyPath": "/grp:org.nuxeo.runtime/org.nuxeo.runtime.stream/org.nuxeo.runtime.codec.service/Services/org.nuxeo.runtime.codec.CodecService",
              "id": "org.nuxeo.runtime.codec.CodecService",
              "overriden": false,
              "version": "2023.9.10"
            }
          ],
          "startOrder": 6,
          "version": "2023.9.10",
          "xmlFileContent": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<component name=\"org.nuxeo.runtime.codec.service\" version=\"1.0\">\n\n  <documentation>\n    The component allows you to register a Codec to encode records.\n  </documentation>\n\n  <implementation class=\"org.nuxeo.runtime.codec.CodecServiceImpl\" />\n\n  <service>\n    <provide interface=\"org.nuxeo.runtime.codec.CodecService\" />\n  </service>\n\n  <extension-point name=\"codec\">\n    <object class=\"org.nuxeo.runtime.codec.CodecDescriptor\" />\n  </extension-point>\n\n  <extension target=\"org.nuxeo.runtime.codec.service\" point=\"codec\">\n    <codec name=\"legacy\" class=\"org.nuxeo.runtime.codec.NoCodecFactory\" />\n    <codec name=\"java\" class=\"org.nuxeo.runtime.codec.SerializableCodecFactory\" />\n    <codec name=\"avro\" class=\"org.nuxeo.runtime.codec.AvroCodecFactory\">\n      <option name=\"encoding\">message</option>\n    </codec>\n    <codec name=\"avroBinary\" class=\"org.nuxeo.runtime.codec.AvroCodecFactory\">\n      <option name=\"encoding\">binary</option>\n    </codec>\n    <codec name=\"avroJson\" class=\"org.nuxeo.runtime.codec.AvroCodecFactory\">\n      <option name=\"encoding\">json</option>\n    </codec>\n  </extension>\n\n</component>\n",
          "xmlFileName": "/OSGI-INF/codec-service.xml",
          "xmlPureComponent": false
        },
        {
          "@type": "NXComponent",
          "documentation": "\n    Avro basic replacements.\n  \n",
          "documentationHtml": "<p>\nAvro basic replacements.\n</p><p></p>",
          "extensionPoints": [],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.runtime.avro--replacement",
              "hierarchyPath": "/grp:org.nuxeo.runtime/org.nuxeo.runtime.stream/org.nuxeo.runtime.avro.contrib/Contributions/org.nuxeo.runtime.avro.contrib--replacement",
              "id": "org.nuxeo.runtime.avro.contrib--replacement",
              "registrationOrder": 0,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.runtime.avro",
                "name": "org.nuxeo.runtime.avro",
                "type": "service"
              },
              "version": "2023.9.10",
              "xml": "<extension point=\"replacement\" target=\"org.nuxeo.runtime.avro\">\n    <replacement forbidden=\"__\" priority=\"-100\" replacement=\"____\"/>\n    <replacement forbidden=\"-\" replacement=\"__dash__\"/>\n    <replacement forbidden=\":\" replacement=\"__colon__\"/>\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo.runtime/org.nuxeo.runtime.stream/org.nuxeo.runtime.avro.contrib",
          "name": "org.nuxeo.runtime.avro.contrib",
          "requirements": [],
          "resolutionOrder": 834,
          "services": [],
          "startOrder": 719,
          "version": "2023.9.10",
          "xmlFileContent": "<?xml version=\"1.0\"?>\n<component name=\"org.nuxeo.runtime.avro.contrib\" version=\"1.0.0\">\n  <documentation>\n    Avro basic replacements.\n  </documentation>\n  <extension target=\"org.nuxeo.runtime.avro\" point=\"replacement\">\n    <replacement forbidden=\"__\" replacement=\"____\" priority=\"-100\" />\n    <replacement forbidden=\"-\" replacement=\"__dash__\" />\n    <replacement forbidden=\":\" replacement=\"__colon__\" />\n  </extension>\n</component>\n",
          "xmlFileName": "/OSGI-INF/avro-contrib.xml",
          "xmlPureComponent": true
        }
      ],
      "fileName": "nuxeo-runtime-stream-2023.9.10.jar",
      "groupId": "org.nuxeo.runtime",
      "hierarchyPath": "/grp:org.nuxeo.runtime/org.nuxeo.runtime.stream",
      "id": "org.nuxeo.runtime.stream",
      "location": "",
      "manifest": "Manifest-Version: 1.0\r\nArchiver-Version: Plexus Archiver\r\nCreated-By: Apache Maven 3.6.1\r\nBuilt-By: root\r\nBuild-Jdk: 17.0.10\r\nBundle-ManifestVersion: 1\r\nBundle-Version: 2023.9.10-t20240314-014016\r\nBundle-Name: Nuxeo Runtime Stream\r\nBundle-SymbolicName: org.nuxeo.runtime.stream;singleton:=true\r\nBundle-Vendor: Nuxeo\r\nNuxeo-Component: OSGI-INF/kafka-config-service.xml,OSGI-INF/stream-servi\r\n ce.xml,OSGI-INF/stream-management-contrib.xml,OSGI-INF/avro-service.xml\r\n ,OSGI-INF/codec-service.xml,OSGI-INF/avro-contrib.xml\r\n\r\n",
      "maxResolutionOrder": 834,
      "minResolutionOrder": 822,
      "packages": [],
      "readme": {
        "blobProviderId": "default",
        "content": "nuxeo-runtime-stream\n======================\n\n## About\n\nThis module provides an integration of nuxeo-stream with Nuxeo.\nIt adds 2 services:\n- a Kafka configuration service: to register Kafka and Zookeeper access and consumer producer properties.\n- a Stream service: to define LogManager configuration, initialize Log and start StreamProcessor.\n\n## Kafka Configurations\n\n You can register one or multiple Kafka configurations using this Nuxeo extension point:\n\n```xml\n<?xml version=\"1.0\"?>\n<component name=\"my.project.kafka.contrib\">\n  <extension target=\"org.nuxeo.runtime.stream.kafka.service\" point=\"kafkaConfig\">\n    <kafkaConfig name=\"default\" zkServers=\"localhost:2181\" topicPrefix=\"nuxeo-\">\n      <producer>\n        <property name=\"bootstrap.servers\">localhost:9092</property>\n      </producer>\n      <consumer>\n        <property name=\"bootstrap.servers\">localhost:9092</property>\n        <property name=\"request.timeout.ms\">65000</property>\n        <property name=\"max.poll.interval.ms\">60000</property>\n        <property name=\"session.timeout.ms\">20000</property>\n        <property name=\"heartbeat.interval.ms\">1000</property>\n        <property name=\"max.poll.records\">50</property>\n      </consumer>\n    </kafkaConfig>\n  </extension>\n</component>\n```\n\nThis Kafka configuration named `default` can be used in the Log configuration below.\n\nMake sure you have read the [nuxeo-stream README](../nuxeo-stream/README.md) to setup properly Kafka.\n\n\n## Stream Service\n\nThis service enable to define Log configurations and to register stream processors.\n\n### The Log configuration\n\nThere are 2 types of Log configurations:\n\n- In-Memory: limited for single node: all producers and consumers must be on the same node. No persistence.\n- Kafka: required for distributed producers and consumers.\n\nYou can define a Log configuration with the following Nuxeo extension point:\n\n```xml\n<?xml version=\"1.0\"?>\n<component name=\"my.project.stream.log.contrib\">\n  <extension target=\"org.nuxeo.runtime.stream.service\" point=\"logConfig\">\n    ... (see documentation) ...\n  </extension>\n</component>\n```\n\nThe default Log type is In-Memory.\n\n#### Using Log from Nuxeo\n\nThe Nuxeo Stream service enables to get and share access to LogManager:\n\n```java\n  StreamService service = Framework.getService(StreamService.class);\n  LogManager manager = service.getLogManager(\"custom\");\n  // write a record to myStream, the log exists because it has been initialized by the service\n  LogAppender<Record> appender = manager.getAppender(\"myStream\");\n  appender.append(key, Record.of(key, value.getBytes()));\n\n  // read\n  try (LogTailer<Record> tailer = manager.createTailer(\"myGroup\", \"myStream\")) {\n      LogRecord<Record> logRecord = tailer.read(Duration.ofSeconds(1));\n      assertEquals(key, logRecord.message().key);\n  }\n  // don't close the manager, this is done by the service\n```\n\n### Stream processing\n\nIt is possible to register stream processors, this way they are initialized and started with Nuxeo.\n\nThe extension point refer to a class that returns the topology of computations,\nthe settings are configurable in the contribution.\nAlso the retry policy can be set to a specific computation or for all using `default` as policy name,\nthe `delay` between retries, exponentially backing off to the `maxDelay` and multiplying successive delays by a 2 factor\nthe `maxRetries` sets the max number of retries to perform. If `continueOnFailure` is true then the computation\nwill checkpoint the record in error and continue processing new record.\nThe default policy when unspecified is no retry and abort on failure (`continueOnFailure` is false).\n\n```xml\n<?xml version=\"1.0\"?>\n<component name=\"my.project.stream.stream.contrib\">\n  <extension target=\"org.nuxeo.runtime.stream.service\" point=\"streamProcessor\">\n  <streamProcessor name=\"myStreamProcessor\" logConfig=\"default\" defaultConcurrency=\"4\" defaultPartitions=\"12\"\n      class=\"org.nuxeo.runtime.stream.tests.MyStreamProcessor\">\n      <stream name=\"output\" partitions=\"1\" />\n      <computation name=\"myComputation\" concurrency=\"8\" />\n      <policy name=\"myComputation\" continueOnFailure=\"false\" maxRetries=\"3\" delay=\"500ms\" maxDelay=\"10s\" />\n    </streamProcessor>\n  </extension>\n</component>\n```\n\n## About Nuxeo\nNuxeo dramatically improves how content-based applications are built, managed and deployed, making customers more agile, innovative and successful. Nuxeo provides a next generation, enterprise ready platform for building traditional and cutting-edge content oriented applications. Combining a powerful application development environment with SaaS-based tools and a modular architecture, the Nuxeo Platform and Products provide clear business value to some of the most recognizable brands including Verizon, Electronic Arts, Sharp, FICO, the U.S. Navy, and Boeing. Nuxeo is headquartered in New York and Paris. More information is available at www.nuxeo.com.\n",
        "digest": "8532bc73abda46722e3118dbcba62fdf",
        "encoding": "UTF-8",
        "length": 4896,
        "mimeType": "text/plain",
        "name": "README.md"
      },
      "requirements": [],
      "version": "2023.9.10"
    }
  ],
  "creationDate": 1710762362683,
  "key": "Nuxeo Platform-2023.9",
  "name": "Nuxeo Platform",
  "operations": [],
  "packages": [],
  "pluginSnapshots": {},
  "releaseDate": 1710762362683,
  "version": "2023.9"
}