Joule
  • Welcome to Joule's Docs
  • Why Joule?
    • Joule capabilities
  • What is Joule?
    • Key features
    • The tech stack
  • Use case enablement
    • Use case building framework
  • Concepts
    • Core concepts
    • Low code development
    • Unified execution engine
    • Batch and stream processing
    • Continuous metrics
    • Key Joule data types
      • StreamEvent object
      • Contextual data
      • GeoNode
  • Tutorials
    • Getting started
    • Build your first use case
    • Stream sliding window quote analytics
    • Advanced tutorials
      • Custom missing value processor
      • Stateless Bollinger band analytics
      • IoT device control
  • FAQ
  • Glossary
  • Components
    • Pipelines
      • Use case anatomy
      • Data priming
        • Types of import
      • Processing unit
      • Group by
      • Emit computed events
      • Telemetry auditing
    • Processors
      • Common attributes
      • Filters
        • By type
        • By expression
        • Send on delta
        • Remove attributes
        • Drop all events
      • Enrichment
        • Key concepts
          • Anatomy of enrichment DSL
          • Banking example
        • Metrics
        • Dynamic contextual data
          • Caching architecture
        • Static contextual data
      • Transformation
        • Field Tokeniser
        • Obfuscation
          • Encryption
          • Masking
          • Bucketing
          • Redaction
      • Triggers
        • Change Data Capture
        • Business rules
      • Stream join
        • Inner stream joins
        • Outer stream joins
        • Join attributes & policy
      • Event tap
        • Anatomy of a Tap
        • SQL Queries
    • Analytics
      • Analytic tools
        • User defined analytics
          • Streaming analytics example
          • User defined analytics
          • User defined scripts
          • User defined functions
            • Average function library
        • Window analytics
          • Tumbling window
          • Sliding window
          • Aggregate functions
        • Analytic functions
          • Stateful
            • Exponential moving average
            • Rolling Sum
          • Stateless
            • Normalisation
              • Absolute max
              • Min max
              • Standardisation
              • Mean
              • Log
              • Z-Score
            • Scaling
              • Unit scale
              • Robust Scale
            • Statistics
              • Statistic summaries
              • Weighted moving average
              • Simple moving average
              • Count
            • General
              • Euclidean
        • Advanced analytics
          • Geospatial
            • Entity geo tracker
            • Geofence occupancy trigger
            • Geo search
            • IP address resolver
            • Reverse geocoding
            • Spatial Index
          • HyperLogLog
          • Distinct counter
      • ML inferencing
        • Feature engineering
          • Scripting
          • Scaling
          • Transform
        • Online predictive analytics
        • Model audit
        • Model management
      • Metrics engine
        • Create metrics
        • Apply metrics
        • Manage metrics
        • Priming metrics
    • Contextual data
      • Architecture
      • Configuration
      • MinIO S3
      • Apache Geode
    • Connectors
      • Sources
        • Kafka
          • Ingestion
        • RabbitMQ
          • Further RabbitMQ configurations
        • MQTT
          • Topic wildcards
          • Session management
          • Last Will and Testament
        • Rest endpoints
        • MinIO S3
        • File watcher
      • Sinks
        • Kafka
        • RabbitMQ
          • Further configurations
        • MQTT
          • Persistent messaging
          • Last Will and Testament
        • SQL databases
        • InfluxDB
        • MongoDB
        • Geode
        • WebSocket endpoint
        • MinIO S3
        • File transport
        • Slack
        • Email
      • Serialisers
        • Serialisation
          • Custom transform example
          • Formatters
        • Deserialisers
          • Custom parsing example
    • Observability
      • Enabling JMX for Joule
      • Meters
      • Metrics API
  • DEVELOPER GUIDES
    • Setting up developer environment
      • Environment setup
      • Build and deploy
      • Install Joule
        • Install Docker demo environment
        • Install with Docker
        • Install from source
        • Install Joule examples
    • Joulectl CLI
    • API Endpoints
      • Mangement API
        • Use case
        • Pipelines
        • Data connectors
        • Contextual data
      • Data access API
        • Query
        • Upload
        • WebSocket
      • SQL support
    • Builder SDK
      • Connector API
        • Sources
          • StreamEventParser API
        • Sinks
          • CustomTransformer API
      • Processor API
      • Analytics API
        • Create custom metrics
        • Define analytics
        • Windows API
        • SQL queries
      • Transformation API
        • Obfuscation API
        • FieldTokenizer API
      • File processing
      • Data types
        • StreamEvent
        • ReferenceDataObject
        • GeoNode
    • System configuration
      • System properties
  • Deployment strategies
    • Deployment Overview
    • Single Node
    • Cluster
    • GuardianDB
    • Packaging
      • Containers
      • Bare metal
  • Product updates
    • Public Roadmap
    • Release Notes
      • v1.2.0 Join Streams with stateful analytics
      • v1.1.0 Streaming analytics enhancements
      • v1.0.4 Predictive stream processing
      • v1.0.3 Contextual SQL based metrics
    • Change history
Powered by GitBook
On this page
  • Overview
  • Example configuration
  • Joule CLI switch
  • Enable services
  • Event lineage
  • Internal database
  • Rest API
  • Internal database configuration
  • Example
  • Attributes schema
  • Rest API Configuration
  • Attributes schema

Was this helpful?

  1. DEVELOPER GUIDES
  2. System configuration

System properties

Configure and enable core Joule features based on deployment needs

Overview

Joule internal setting can be custom configured to suit the needs of your environment.

This guide allows precise control over Joule’s setup for optimised deployment.

Key sections include:

  1. General configuration Set metadata and enable core services like the internal database and REST API.

  2. Service enabling Control features such as event lineage, internal database, and REST API.

  3. Database settings Configure Joule’s embedded DuckDB for metrics and state queries, including memory limits and thread usage.

  4. Rest API Customise REST API options, including file handling, security, and SSL settings.

Example configuration

# General Rest API details 
joule.version=1.1.0
joule.contact.name=Lyndon Adams
joule.contact.email=enquiries@fractalworks.io
joule.contact.url=https://fractalworks.io

# Enable service switches
joule.lineage.enable=false
joule.internaldb.enable=true
joule.restapi.enable=true

# Internal database setting
joule.db.path=./db/joule.db
joule.db.memoryOnly=false
joule.db.memory_limit='512MB'
joule.db.access_mode=READ_WRITE
joule.db.threads=2
joule.db.worker_threads=2
joule.db.default_order='DESC'

# RestAPI setting
joule.rest.port=9080

# Directory to write files that exceed the in-memory limit
joule.rest.downloadPath=downloads

# The maximum individual file size allowed In GB
joule.rest.maxFileSize=2

# The maximum file size to handle in memory in MB
joule.rest.InMemoryFileSize=100

# The maximum size of the entire multipart request in GB
joule.rest.totalRequestSize=5

# SSL config
joule.rest.enableSSL=false
joule.rest.pemCertPath=./conf/cert.pem
joule.rest.keyCertPath=./conf/key.pem

Joule CLI switch

Apply the below command line switch to the Joule process when using a custom joule.properties file. Setting within this file will override the default setting.

To override the default setting provide a single configuration file and use the -c command line switch to specify the file path.

-c /app/joule/config/joule.properties

Enable services

To enable services using default setting the following

# Enable service switches
joule.lineage.enable=false
joule.internaldb.enable=true
joule.restapi.enable=true

Event lineage

Any event processor that changes the state of the passed event can have this action recorded within the event. There is a small memory overhead to keep changed state.

joule.lineage.enable=false

This is currently an experimental feature which is undergoing further development to determine its usefulness within a stream processing context. Therefore it is set to disabled as a default setting.

Internal database

joule.internaldb.enable=true

Rest API

joule.restapi.enable=true

Internal database configuration

Joule ships with an in-memory database to support event capturing, metrics and ad-hoc queries for processors.

Example

# Internal database setting
joule.db.path=./db/joule.db
joule.db.memoryOnly=false
joule.db.memory_limit=4GB
joule.db.access_mode=READ_WRITE
joule.db.threads=8
joule.db.default_order=DESC

Attributes schema

Property
Description
Default

joule.db.path

Relative path to the Joule process include database file name.

default: ./db/joule.db

joule.db.memoryOnly

Boolean flag set to true an in-memory database is created. Note that for an in-memory database no data is persisted to disk.

default: false

joule.db.memory_limit

The maximum memory of the database system (e.g. 1GB)

default: 512MB

joule.db.access_mode

Access mode of the database (AUTOMATIC, READ_ONLY or READ_WRITE).

default: READ_WRITE

joule.db.threads

The number of total worker threads used by the database.

default: 2

joule.db.default_order

The query set order type used when none is specified (ASC or DESC).

default: DESC

Rest API Configuration

# RestAPI setting
joule.rest.port=9080

# Directory to write files that exceed the in-memory limit
joule.rest.downloadPath=downloads

# The maximum individual file size allowed In GB
joule.rest.maxFileSize=2

# The maximum file size to handle in memory in MB
joule.rest.InMemoryFileSize=100

# The maximum size of the entire multipart request in GB
joule.rest.totalRequestSize=5

# SSL config
joule.rest.enableSSL=false
joule.rest.pemCertPath=./conf/cert.pem
joule.rest.keyCertPath=./conf/key.pem

Attributes schema

Property
Description
Default

joule.rest.port

Rest API port

default: 9080

joule.rest.downloadPath

default: downloads

joule.rest.maxFileSize

The maximum individual file size allowed In GB

default: 2GB

joule.rest.InMemoryFileSize

The maximum file size to handle in memory in MB

default: 100MB

joule.rest.totalRequestSize

The maximum size of the entire multipart request in GB

default: 5GB

joule.rest.enableSSL

If you want to secure your Joule process with SSL set this flag to true.

Supported certificate formats are PKCS#12 (.p12) and PKCS#8 (.pem) and Java KeyStore (.jks).

default: false

joule.rest.pemCertPath

Certificate from a trusted CA or a self-signed certificate.

default:

/app/joule/certs/cert.pem

joule.rest.keyCertPath

Private key

default:

/app/joule/certs/key.pem

PreviousSystem configurationNextDeployment Overview

Last updated 6 months ago

Was this helpful?

Joule ships with an embedded database, , that provides core features such as metrics processing, event tapping and external state queries. This feature is enabled by default.

See for further details.

Joule ships with an embedded Rest API that provides external query and Web socket APIs. See documentation for further details. This feature is enabled by default.

See for further details.

Joule enables Rest API when the in-memory database is enabled. Dynamic endpoints are created to support data exports and paginated queries. See for further information.

Directory the system rest consumer will download files to ready for data ingestion See documentation

DuckDB
Rest API documentation
internal database configuration
Rest API
Rest API configuration
Rest API