# Config.json

The config.json is the primary configuration file that holds all required settings in order to run an Exivity instance or node successfully. The`config.json`is divided into several sections related to the individual Exivity software components (i.e. `database`, `mq`, etc) and is typically created and modified by the installer. However, in some situations such as multi-node setups, it is required to change this configuration file in order to support different workloads on different nodes. Also when migrating to a different PostgreSQL database or RabbitMQ cluster, it would be required to change the database or mqrelated settings in the `config.json`configuration file.

### db

The `db` section contains the settings for the PostgreSQL database engine where the Exivity database is hosted:

```
"db": {
		"driver": "postgres",
		"parameters": {
			"host": "localhost",
			"port": "5432",
			"sslmode": "disable",
			"dbname": "exdb",
			"user": "postgres",
			"password": "secretpassword",
			"connect_timeout": "10",
			"target_session_attrs": "read-write"
		}
	}
```

### **mq**

The `mq` section contains the settings for the RabbitMQ message engine:

```
"mq": {
		"servers": [
			{
				"host": "localhost",
				"port": 5672,
				"secure": false
			}
		],
		"user": "guest",
		"password": "guest",
		"vhost": "/",
		"nodeID": "mqnode01",
		"redialPeriod": 5
	}
```

### griffon

The `griffon`section contains settings for the `Exivity Job Manager`:

```
"griffon": {
		"heartbeatPeriod": 5,
		"TTL": 10
	}
```

### chronos

The `chronos` section stores information related to the Exivity Scheduling Service:&#x20;

```
	"chronos": {
		"heartbeatPeriod": 5,
		"TTL": 60
	}
```

### merlin

The `merlin` section contains all parameters related to backend components:

```
	"merlin": {
		"reservedCPU": 1,
		"heartbeatPeriod": 5,
		"programs": {
			"extract": {
				"path": "bin\\use.exe",
				"queue": "EXTRACT",
				"CPU": 0.25,
				"RAM": 100,
				"params": "${params}"
			},
			"transform": {
				"path": "bin\\transcript.exe",
				"queue": "TRANSFORM",
				"CPU": 0.5,
				"RAM": 250
			},
			"report": {
				"path": "bin\\edify.exe",
				"queue": "REPORT",
				"CPU": 1,
				"RAM": 500
			},
			"horizon": {
				"path": "bin\\horizon.exe",
				"queue": "BUDGET",
				"CPU": 0.5,
				"RAM": 50
			},
			"execute": {
				"path": "${program}",
				"queue": "EXECUTE",
				"CPU": 0.25,
				"RAM": 100
			},
			"proximity": {
				"path": "server\\php\\php.exe",
				"queue": "PROXIMITY",
				"CPU": 0.5,
				"RAM": 1000
			},
			"pigeon": {
				"path": "server\\php\\php.exe",
				"queue": "PIGEON",
				"CPU": 0.25,
				"RAM": 250
			},
			"workflow_ended": {
				"path": "server\\php\\php.exe",
				"queue": "WORKFLOW_EVENT",
				"topic": "evt.workflow_status.griffon.#",
				"params": "common\\pigeon\\pigeon.phar event:post workflow_ended `${payload}`",
				"CPU": 0.25,
				"RAM": 250
			},
			"report_published": {
				"path": "server\\php\\php.exe",
				"queue": "REPORT_PUBLISHED",
				"topic": "evt.report_published.proximity.#",
				"params": "common\\pigeon\\pigeon.phar event:post report_published `${payload}`",
				"CPU": 0.25,
				"RAM": 250
			}
		}
	}
```
