Integration / Apache NiFi Interview Questions
What is a Controller Service in NiFi and how is it different from a Processor?
A Controller Service is a shared, reusable service that processors within a Process Group (or across the entire NiFi instance) can reference in their configurations. Where a Processor performs work on individual FlowFiles, a Controller Service provides a shared capability — a database connection pool, an SSL context, a distributed map cache client, a record reader/writer — that multiple processors reuse simultaneously.
Common Controller Services include:
DBCPConnectionPool: Manages a JDBC connection pool. Processors like ExecuteSQL and PutDatabaseRecord reference this service instead of each opening their own connections, dramatically reducing database connection overhead.
JsonTreeReader / JsonRecordSetWriter: Define how to read and write JSON records. Used by record-aware processors to decouple format handling from logic.
StandardSSLContextService: Provides a shared TLS/SSL context (keystore, truststore) referenced by any processor needing secure connections.
DistributedMapCacheClientService: Implements a distributed in-memory key-value cache accessible across the flow, useful for deduplication and state sharing.
Controller Services have their own lifecycle: they must be enabled before any referencing processor can start, and they cannot be disabled while processors referencing them are running.
More Related questions...