Add Support for D2IR API Integration with INN-Reach Resource Sharing Systems (UXPROD-2598)

[UXPROD-4108] INN-Reach: Record Contribution Enhancements Created: 02/Mar/23  Updated: 30/Nov/23  Resolved: 12/May/23

Status: Closed
Project: UX Product
Components: None
Affects versions: None
Fix versions: Poppy (R2 2023)
Parent: Add Support for D2IR API Integration with INN-Reach Resource Sharing Systems

Type: New Feature Priority: P3
Reporter: Irina Pokhylets Assignee: Tim Auger
Resolution: Done Votes: 0
Labels: epam-volaris, inn-reach
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original estimate: Not Specified

Issue links:
Defines
is defined by MODINREACH-347 Record Contribution Errors Should not... Awaiting deployment
is defined by MODINREACH-351 Ensure that ongoing contributions can... Awaiting deployment
Relates
relates to UXPROD-3679 Record Contribution Enhancements ("Bi... In Refinement
Release: Poppy (R2 2023)
Epic Link: Add Support for D2IR API Integration with INN-Reach Resource Sharing Systems
Front End Estimate: Out of scope
Front-End Confidence factor: 100%
Back End Estimate: XXL < 30 days
Back-End Confidence factor: 80%
Development Team: Volaris
PO Rank: 99
Rank: Cornell (Full Sum 2021): R5

 Description   

Current situation or problem:

The contribution job(s) are not resilient and does not handle long periods of interruption, container restarts, etc.

In scope

  1. Extend springframework.kafka ConcurrentMessageListenerContainer for adding concurrency to contribution jobs implementation (ongoing and initial).
  2. Accomplish the development of component/mechanism that will manage retries (with intervals, maxAmount, other params) to the Central server when jobs are paused.

 

Proposed solution/stories
We’re already using org.springframework.kafka but not taking advantage of its concurrent features and not taking advantage of features that allow for pausing and starting consumers.

Our implementation of InitialContributionJobMessageConsumer could contain a single reference to the ConcurrentMessageListenerContainer. Our message processing code could easily be injected into the implementation of an AcknowledgingMessageListener.

When a message cannot be committed because the central server is unavailable, we could pause the ConcurrentMessageListenerContainer, and schedule a retry using a ConcurrentTaskScheduler.

Javadoc for ConcurrentMessageListenerContainer

Example code using ConcurrentMessageListenerContainer to read messages form kafka with pause and restart:

Medium post describing the above repo

 

Links to additional info: Volaris - Architecture Decision Log (ADL) - Folio Development Teams - FOLIO Wiki - Option B

 

 



 Comments   
Comment by Irina Pokhylets [ 12/May/23 ]

Tim Auger 
ARCH-62 is not a blocker for this feature, it might include improvements for Inn-reach if it is prioritized. I'm closing the feature because all the planned work has been done and tested on GVSU environment. 

Comment by Tim Auger [ 12/May/23 ]

Irina Pokhylets Rejoice! Thank you.

Generated at Fri Feb 09 00:37:20 UTC 2024 using Jira 1001.0.0-SNAPSHOT#100246-sha1:7a5c50119eb0633d306e14180817ddef5e80c75d.