Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement In-Process Queue Management for Email-Based ReFramework Workflow #13

Closed
9 of 11 tasks
cprima opened this issue Nov 13, 2024 · 1 comment
Closed
9 of 11 tasks
Assignees
Labels
enhancement New feature or request

Comments

@cprima
Copy link
Contributor

cprima commented Nov 13, 2024

Description

This feature implements a hybrid ReFramework solution tailored for email processing using an in-process queue managed at runtime. Unlike standard ReFramework implementations that rely on Orchestrator queues, this design will populate and manage transactions directly from a mailbox, ensuring transactions are processed in-memory. The in-process queue will support dynamic batching, real-time adaptability, and handle Orchestrator-specific functions like transaction status and error handling locally, reducing dependency on Orchestrator. This feature eliminates the need for a Dispatcher, handles a teaching context where multiple learners might run the process in parallel to each other, while providing the default TransactionItem for processing.

Acceptance Criteria

  • In-process queue is populated directly from the mailbox at the initialization of each process run, adhering to the specified batch size.
  • Transaction statuses are managed in-memory, with custom logic for marking items as “Successful” or “Failed.”
  • Retry mechanisms for system exceptions are implemented in alignment with ReFramework retry standards.
  • Logging and monitoring are integrated within the workflow, capturing transaction progress, errors, and retry details.
  • Workflow maintains ReFramework’s standard structure, enabling seamless integration with GetTransactionData and Process states.

Subtasks

  • Develop mailbox connection and email fetching logic to populate the in-process queue in batches.
  • Implement dynamic batch size configuration (Target_Batchsize) to control memory usage.
  • Create custom transaction status handling to track and update transaction outcomes locally.
  • Design a retry mechanism for system exceptions, ensuring failed transactions adhere to retry limits.
  • Integrate custom logging for tracking transaction statuses, retries, and errors.
  • Conduct testing to verify the process handles real-time updates in the mailbox and processes new items adaptively.

Related Issues / Dependencies

Priority

  • Priority: High

Attachments / Additional Resources

  • Attachments:
    • none
@cprima cprima self-assigned this Nov 13, 2024
@cprima cprima added the enhancement New feature or request label Nov 13, 2024
@cprima cprima moved this to In progress in rpapub 2024-25 Nov 13, 2024
@cprima
Copy link
Contributor Author

cprima commented Nov 17, 2024

Fixed with 03074ff

@cprima cprima closed this as completed Nov 17, 2024
@github-project-automation github-project-automation bot moved this from In progress to Done in rpapub 2024-25 Nov 17, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
Status: Done
Development

No branches or pull requests

1 participant