Introduction
Apache NiFi 2.0.0 includes the removal of multiple deprecated extension components and legacy product features. Version 1.18.0 introduced deprecation logging to provide runtime warnings for elements targeted for removal. Upgrading to the latest version 1 release provides the most accurate set of deprecation warnings.
Configuration changes must be completed prior to upgrading from version 1 to avoid failures. Application settings and flow design changes should be completed and tested before upgrading.
Migrating from deprecated components and features requires different steps depending on configured properties. The level of difficulty varies based on the number of properties to be changed and the steps involved to maintain similar behavior.
Processors
Migrating deprecated Processors and properties requires flow design changes. The steps required range from setting different property values to replacing one Processor with one or more Processors providing similar capabilities.
Base64EncodeContent
Component Class | org.apache.nifi.processors.standard.Base64EncodeContent |
Bundle Group | org.apache.nifi |
Bundle Artifact | nifi-standard-nar |
Deprecated Version | 1.20.0 |
Migration Difficulty | LOW |
Migration Type | Component Replacement |
Alternatives
Component Class | org.apache.nifi.processors.standard.EncodeContent |
Bundle Group | org.apache.nifi |
Bundle Artifact | nifi-standard-nar |
Migration
Base64EncodeContent supports a single Mode property that can be set to Encode or Decode.
The standard EncodeContent Processor supports Base64 and other formats for both encoding and decoding.
The EncodeContent Processor provides a direct replacement for Base64EncodeContent using standard properties.
Property | Value |
---|---|
Mode | Encode |
Encoding | base64 |
Flow Definitions
The Deprecated Flow Definition includes Base64EncodeContent configured for encoding.
The Migrated Flow Definition replaces Base64EncodeContent with EncodeContent configured with Base64 encoding.
GetHTTP
Component Class | org.apache.nifi.processors.standard.GetHTTP |
Bundle Group | org.apache.nifi |
Bundle Artifact | nifi-standard-nar |
Deprecated Version | 1.9.0 |
Migration Difficulty | LOW |
Migration Type | Component Replacement |
Alternatives
Component Class | org.apache.nifi.processors.standard.InvokeHTTP |
Bundle Group | org.apache.nifi |
Bundle Artifact | nifi-standard-nar |
Migration
GetHTTP supports a number of configurable properties to retrieve data using the HTTP GET method. The URL property controls the primary behavior of the Processor.
GetHTTP requires the Filename property to set the corresponding FlowFile attribute for content retrieved. The Processor requires an SSL Context Service when the URL starts with the HTTPS scheme.
The standard InvokeHTTP Processor supports standard HTTP methods including GET. Unlike GetHTTP, InvokeHTTP does not require an SSL Context Service for accessing HTTPS locations as it defaults to the Java Runtime default certificate authorities.
InvokeHTTP has a required HTTP URL property and defaults to setting the FlowFile filename attribute to a random UUID. The filename attribute can be derived from the URL path using the Response FlowFile Naming Strategy property set to URL_PATH.
InvokeHTTP has lower default socket timeout settings than GetHTTP.
Setting standard InvokeHTTP properties provides functionality similar to GetHTTP,
Property | Value |
---|---|
HTTP Method | GET |
HTTP URL | HTTP or HTTPS location |
Response FlowFile Naming Strategy | URL_PATH |
Flow Definitions
The Deprecated Flow Definition includes GetHTTP configured to retrieve the SHA-256 checksum for the NiFi 1.20.0 distribution. The Flow Definition also includes a required SSL Context Service configured with the Java Runtime cacerts Trust Store.
The Migrated Flow Definition includes InvokeHTTP configured with the same URL but without the SSL Context Service, which is not required for public trusted HTTPS services.
GetJMSQueue
Component Class | org.apache.nifi.processors.standard.GetJMSQueue |
Bundle Group | org.apache.nifi |
Bundle Artifact | nifi-standard-nar |
Deprecated Version | 1.3.0 |
Migration Difficulty | MEDIUM |
Migration Type | Component Replacement |
Alternatives
Component Class | org.apache.nifi.processors.standard.ConsumeJMS |
Bundle Group | org.apache.nifi |
Bundle Artifact | nifi-standard-nar |
Migration
GetJMSQueue supports retrieving messages using the Java Message Service Queue interface to access Apache ActiveMQ.
The Processor bundles the ActiveMQ libraries and requires the URL property to specify the JMS server location, and the Destination Name property to specify the JMS queue for retrieval. Additional optional properties support TLS communication and authentication as well as batching.
The standard ConsumeJMS Processor similar functionality to GetJMSQueue, but requires additional configuration. ConsumeJMS does not bundle JMS libraries and requires referencing a local directory containing implementation JAR files.
ConsumeJMS should be configured with a Connection Factory Service implementation of JMSConnectionFactoryProvider with required properties. The ActiveMQ Artemis library provides the current supported version of JMS access.
Property | Value |
---|---|
JMS Connection Factory Implementation Class | org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory |
JMS Client Libraries | /opt/activemq-artemis-2.28.0/lib |
JMS Broker URI | tcp://${AMQ_HOST}:61616 |
ConsumeJMS uses the Connection Factory Service along with several other properties to access JMS Queues.
Property | Value |
---|---|
Connection Factory Service | JMSConnectionFactoryProvider |
Destination Name | |
Destination Type | QUEUE |
Flow Definitions
The Deprecated Flow Definition includes GetJMSQueue configured for ActiveMQ running on the localhost address with a specified Destination Name.
The Migrated Flow Definition includes ConsumeJMS configured with a JMSConnectionFactoryProvider using the same JMS broker information. The Migrated Flow Definition includes a JMS Parameters context with a Parameter named JmsClientLibrariesPath referencing the local directory containing the Apache ActiveMQ Artemis libraries.
HashAttribute
Component Class | org.apache.nifi.processors.standard.HashAttribute |
Bundle Group | org.apache.nifi |
Bundle Artifact | nifi-standard-nar |
Deprecated Version | 1.21.0 |
Migration Difficulty | LOW |
Migration Type | Component Replacement |
Alternatives
Component Class | org.apache.nifi.processors.standard.CryptographHashAttribute |
Bundle Group | org.apache.nifi |
Bundle Artifact | nifi-standard-nar |
Migration
HashAttribute supports generating an MD5 digest of one more FlowFile attribute name and value pairs. The MD5 algorithm is not secure for cryptographic operations, and alternatives such as the SHA-2 or SHA-3 algorithms should be used.
The CryptographicHashAttribute Processor supports generating a digest of FlowFile attributes using a configurable algorithm.
Each Processor uses different approaches for specifying which FlowFile attributes to hash.
HashAttribute uses the Hash Value Attribute Key property to specify the destination FlowFile attribute name for the computed digest. HashAttribute uses one or more dynamic properties to provide source FlowFile attribute name, and a regular expression value to determine whether the FlowFile attribute should be included in the digest calculation. HashAttribute converts all attribute values to bytes using UTF-8 encoding.
Generating a hash attribute from a single FlowFile attribute name and value pair requires the both standard and dynamic properties.
Property | Value |
---|---|
Hash Value Attribute Key | label-hash |
label | .* |
CryptographicHashAttribute uses dynamic properties to specify the source and destination FlowFile attribute names. The Hash Algorithm property should be configured with SHA-256 or other SHA-2 algorithm.
Generating a hash attribute from a single FlowFile attribute value requires both standard and dynamic properties.
Property | Value |
---|---|
Hash Algorithm | SHA-256 |
label | label-hash |
Flow Definitions
The Deprecated Flow Definition includes HashAttribute configured to write a FlowFile attribute named label-hash using the label attribute name and the value of the attribute from the incoming FlowFile.
The Migrated Flow Definition includes CryptographicHashAttribute configured to write a FlowFile attribute named label-hash using the value of the label attribute from the incoming FlowFile.