Page properties | ||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
...
- /site-to-site/
- GET: Returns required information of Site-to-Site for the source NiFi environment. Representing Controller of target NiFi environment.
- /site-to-site/peers/
- GET: Returns available peers of this NiFi environment.
- /site-to-site/input-ports/{portId}/transactions/
- POST: Initiate new transaction to send data from source to target NiFi. A new transaction id is published and returned.
- /site-to-site/input-ports/{portId}/transactions/{transactionId}
- PUT: Extends the transaction's TTL, used to let server know the client still working
- DELETE: Commit the transaction which is held on server side.
- /site-to-site/input-ports/{portId}/transactions/{transactionId}/flow-files
- POST: Transfer data from source to target NiFi. The transaction will be held on server side instead of commit it immediately, in order to provide 2-phase style commit. Returns Checksum calculated on server side.
- /site-to-site/output-ports/{portId}/transactions/
- POST: Initiate new transaction to receive data from target to source NiFi. A new transaction id is published and returned.
- /site-to-site/output-ports/{portId}/transactions/{transactionId}
- PUT: Extends the transaction's TTL, used to let server know the client still working
- DELETE: Commit the transaction which is held on server side. Client sends a Checksum calculated on client side.
- /site-to-site/output-ports/{portId}/transactions/{transactionId}/flow-files
- GET: Transfer data from target to source NiFi. The transaction will be held on server side instead of commit it immediately, in order to provide 2-phase style commit.
...
PlantUML |
---|
actor A_component actor HttpClient actor HttpClientTransaction actor SiteToSiteRestApiClient actor SiteToSiteResource ' comment: initialize A_component -> HttpClient: createTransaction HttpClient -> SiteToSiteRestApiUtilSiteToSiteRestApiClient: initiateTransaction SiteToSiteRestApiClient -> SiteToSiteResource: POST /site-to-site/input-ports/{portId}/transactions SiteToSiteRestApiClient <-- SiteToSiteResource: transactionUrl, transactionProtocolVersion HttpClient <-- SiteToSiteRestApiClient HttpClient -> HttpClientTransaction: new HttpClientTransaction -> HttpClientTransaction: state = TRANSACTION_STARTED HttpClientTransaction -> SiteToSiteRestApiClient: openConnectionForSend SiteToSiteRestApiUtilSiteToSiteRestApiClient -> SiteToSiteResource: POST /site-to-site/input-ports/{portId}/transactions/{transactionId}/flow-files HttpClient <-- HttpClientTransaction A_component <-- HttpClient: Transaction 'comment: receive alt while there is data packet to send A_component -> HttpClientTransaction: send HttpClientTransaction -> SiteToSiteResource: writes data to outputstream HttpClientTransaction -> HttpClientTransaction: state = DATA_EXCHANGED A_component <-- HttpClientTransaction end 'comment: confirm A_component -> HttpClientTransaction: confirm HttpClientTransaction -> SiteToSiteRestApiClient: finishTransferFlowFiles SiteToSiteRestApiClient <-- SiteToSiteResource: 202 Accepted: returns serverChecksum HttpClientTransaction -> HttpClientTransaction: validate server Checksum HttpClientTransaction -> HttpClientTransaction: state = TRANSACTION_CONFIRMED A_component <-- HttpClientTransaction 'comment: complete A_component -> HttpClientTransaction: complete HttpClientTransaction -> SiteToSiteRestApiClient: commitTransferFlowFiles SiteToSiteRestApiClient -> SiteToSiteResource: DELETE /site-to-site/input-ports/{portId}/transactions/{transactionId} SiteToSiteRestApiClient <-- SiteToSiteResource: 200 OK HttpClientTransaction <-- SiteToSiteRestApiClient HttpClientTransaction -> HttpClientTransaction: state = TRANSACTION_COMPLETED A_component <-- HttpClientTransaction |
...
The complete() method doesn't do anything other than update state to TRANSACTION_COMPLETED.
PlantUML |
---|
actor A_component actor HttpClient actor HttpClientTransaction actor SiteToSiteRestApiClient actor SiteToSiteResource ' comment: initialize A_component -> HttpClient: createTransaction HttpClient -> SiteToSiteRestApiUtilSiteToSiteRestApiClient: initiateTransaction SiteToSiteRestApiClient -> SiteToSiteResource: POST /site-to-site/output-ports/{portId}/transactions SiteToSiteRestApiClient <-- SiteToSiteResource: transactionUrl, transactionProtocolVersion HttpClient <-- SiteToSiteRestApiClient HttpClient -> HttpClientTransaction: new HttpClientTransaction -> HttpClientTransaction: state = TRANSACTION_STARTED HttpClientTransaction -> SiteToSiteRestApiClient: openConnectionForReceive SiteToSiteRestApiClient -> SiteToSiteResource: GET /site-to-site/output-ports/{portId}/transactions/{transactionId}/flow-files SiteToSiteRestApiClient <-- SiteToSiteResource: 202 Accepted HttpClientTransaction <-- SiteToSiteRestApiClient HttpClient <-- HttpClientTransaction A_component <-- HttpClient: Transaction 'comment: receive alt while there is data packet to receive A_component -> HttpClientTransaction: receive HttpClientTransaction <-- SiteToSiteResource: read from inputstream HttpClientTransaction -> HttpClientTransaction: state = DATA_EXCHANGED A_component <-- HttpClientTransaction: data packet end 'comment: confirm A_component -> HttpClientTransaction: confirm HttpClientTransaction -> SiteToSiteRestApiClient: commitReceivingFlowFiles(checksum) SiteToSiteRestApiClient -> SiteToSiteResource: DELETE /site-to-site/output-ports/{portId}/transactions/{transactionId} SiteToSiteResource -> SiteToSiteResource: validate client Checksum SiteToSiteRestApiClient <-- SiteToSiteResource: 200 OK HttpClientTransaction <-- SiteToSiteRestApiClient HttpClientTransaction -> HttpClientTransaction: state = TRANSACTION_CONFIRMED A_component <-- HttpClientTransaction 'comment: complete A_component -> HttpClientTransaction: complete HttpClientTransaction -> HttpClientTransaction: state = TRANSACTION_COMPLETED A_component <-- HttpClientTransaction |
...