Which pattern should be used to invoke multiple HTTP APIs in parallel and roll back failed requests in sequence?
31 comments · newest first
PA
Paris
10 months ago
C is interesting, but can it really handle all those compensating actions effectively?
DE
Delisa
11 months ago
A sounds complicated, not sure if it's worth it.
JO
Josue
11 months ago
I think option C is the best choice for this scenario.
PA
Paulina
11 months ago
Wait, I thought D was the go-to for reliability patterns?
AN
Antonio
11 months ago
I disagree, B seems more straightforward for handling retries.
KR
Kristin
11 months ago
I was leaning towards option C as well, but I wonder if the VM queues could also work for reliability and rollback. It's a tough call!
DE
Deeanna
12 months ago
I feel like the Until Successful router could be useful, but I can't recall if it specifically handles rolling back requests.
ON
Onita
12 months ago
I'm not entirely sure, but I remember practicing a question about using a Try scope for error handling. Maybe the Parallel for Each scope is the way to go?
MA
Markus
1 year ago
I think the Scatter-Gather pattern might be the right choice since it allows for parallel processing and can handle compensating actions for failures.
AN
Antonio
1 year ago
The Scatter-Gather pattern with a Saga orchestrator sounds like the most comprehensive solution to me. It should allow for the parallel API calls and provide a way to handle the rollbacks if any requests fail. I think I'd go with that one.
RO
Roosevelt
1 year ago
I'm a bit confused by the VM queues and error handlers option. That doesn't seem like it would address the need for parallel processing and rollbacks. I'm leaning more towards the Scatter-Gather or Parallel for Each approaches.
LI
Lisha
1 year ago
I'm pretty confident the database transactional outbox and Until Successful router is the way to go here. That pattern seems well-suited for handling the parallel API calls and retrying failed requests.
AL
Alease
1 year ago
Hmm, the Parallel for Each scope with Try scopes seems like a simpler solution that could also work. I'd want to double-check the details, but that might be a good option to consider.
ST
Stefany
1 year ago
This looks like a tricky one. I'm not sure I fully understand the different patterns mentioned, but I think the Scatter-Gather approach with a Saga orchestrator sounds like it could work for handling the parallel API calls and rollbacks.
LU
Luisa
2 years ago
A database as a transactional outbox? Now that's an interesting approach. I'd have to read up more on that, but it could be a clever way to handle the rollbacks.
KI
Kimberlie
2 years ago
A database as a transactional outbox? That sounds like a solid strategy for handling failed requests.
KI
Kiley
2 years ago
C) Scatter-Gather as central Saga orchestrator for all API request with compensating actions for failing routes
AS
Asuncion
2 years ago
A) A database as a transactional outbox and an Until Successful router to retry any requests
BR
Brunilda
2 years ago
I'm leaning towards option B, it seems like a practical approach.
LA
Lashandra
2 years ago
Haha, option D with VM queues and error handlers? Sounds like a whole lot of complexity just for a few API calls. I'll pass on that one.
MI
Miriam
2 years ago
User 3: Yeah, using a database as a transactional outbox and retrying failed requests with an Until Successful router sounds more straightforward.
CA
Carlene
2 years ago
User 2: Maybe option A would be a simpler choice for handling multiple HTTP APIs in parallel.
LO
Louvenia
2 years ago
User 1: I agree, option D does seem overly complex for just a few API calls.
NE
Nettie
2 years ago
I would go with option D, it seems like a safe bet.
TR
Tracey
2 years ago
I disagree, I believe option A is more reliable.
LO
Louvenia
2 years ago
Hmm, B sounds good too. Parallel processing with error handling could work well, especially for simpler use cases.
AR
Arlette
2 years ago
I think option C is the way to go. Scatter-Gather with a Saga orchestrator sounds like the most robust and scalable solution to me.
HE
Hermila
2 years ago
I prefer option B, using a Parallel for Each scope with Try scopes for each HTTP request.
ME
Mee
2 years ago
I think option A could also work well, using a database as a transactional outbox for retrying failed requests.
RE
Reiko
2 years ago
I agree, option C seems like the best choice for invoking multiple HTTP APIs in parallel.
PA
Pauline
2 years ago
I think option C is the best choice.