ฉันมีกรณีการใช้งานหลายกรณีซึ่งกำหนดให้เหตุการณ์ที่กำหนดไว้ล่วงหน้าเริ่มทำงานตามการกระทำของผู้ใช้บางอย่าง
เช่น. สมมติว่าเมื่อ NewUser
ถูกสร้างขึ้นในแอปพลิเคชัน จะต้องเรียก CreateUserInWorkflowSystem
และ FireEmailToTheUser
แบบอะซิงโครนัส มีกรณีทางธุรกิจอื่นๆ อีกหลายกรณีในลักษณะนี้ที่เหตุการณ์จะถูกกำหนดไว้ล่วงหน้าตามกรณีการใช้งาน ฉันสามารถใช้ Promises/Futures เพื่อสร้างโมเดลเหตุการณ์เหล่านี้ได้ดังนี้
if 'NewUser' then
call `CreateUserInWorkflowSystem` (which will be Future based API)
call `FireEmailToTheUser` (which will be Future based API)
if 'FileImport' then
call `API3` (which will be Future based call)
call `API4` (which will be Future based call)
การโทร Future
ทั้งหมดนั้นจะต้องบันทึกความล้มเหลวไว้ที่ใดที่หนึ่งเพื่อให้สามารถลองโทรที่ล้มเหลวอีกครั้งได้ ฯลฯ หมายเหตุ การโทร NewUser
จะไม่รอให้ Futures
เหล่านั้น (เหตุการณ์ต่อการพูด) ดำเนินการให้เสร็จสิ้น
นั่นคือการใช้ Futures/Promises
API ธรรมดา อย่างไรก็ตาม ฉันคิดว่า Akka Persistence จะเหมาะสมที่นี่และ การบล็อกการโทรยังคงสามารถเรียกใช้ Futures
ได้ ด้วยความพากเพียรของ Akka การจัดการความล้มเหลวจะเป็นเรื่องง่ายเนื่องจากจัดเตรียมไว้นอกกรอบ ฯลฯ ฉันเข้าใจว่าการคงอยู่ของ Akka ยังอยู่ในขั้นทดลอง แต่ดูเหมือนจะไม่เป็นปัญหาใหญ่ เนื่องจากโดยทั่วไปแล้ว typesafe จะทำให้เฟรมเวิร์กใหม่เหล่านี้อยู่ในสถานะทดลองก่อนที่จะส่งเสริม ไปสู่การเปิดตัวในอนาคต ฯลฯ (เช่นเดียวกับ Macros) เมื่อพิจารณาจากข้อกำหนดเหล่านี้แล้ว คุณคิดว่า Futures/Promises
หรือการคงอยู่ของ Akka เหมาะสมกว่าที่นี่หรือไม่