สถาปัตยกรรม RabbitMQ สำหรับงานพร้อมผลลัพธ์กลับมา

ฉันได้พยายามสร้างระบบที่ผู้คนสามารถส่งไฟล์เพื่อลงนามได้ การส่งแต่ละครั้งสามารถมีได้หลายไฟล์ และผลลัพธ์จะถูกส่งกลับไปยังผู้ใช้ หากเมื่อไฟล์ทั้งหมดในการส่งแต่ละครั้งเสร็จสิ้น

ขณะนี้ฉันมีกล่องลงนาม 6 กล่องที่เซ็นชื่อไฟล์เดียวในแต่ละครั้ง ดังนั้นสำหรับการส่งแต่ละครั้ง ฉันจะต้องแยกไฟล์ทั้งหมดและโหลดบาลานซ์ในกล่องลงนามทั้ง 6 กล่อง และหลังจากนั้นฉันต้องดึงผลลัพธ์และติดตามว่าไฟล์ทั้งหมดในการส่งนี้เสร็จสมบูรณ์หรือไม่

หากเป็นไปได้ ฉันต้องการจำกัดจำนวนกล่องลงนามสูงสุดที่การส่งแต่ละครั้งสามารถใช้ได้ เพื่อที่การส่งจำนวนมากจะได้ไม่ทำให้งานอื่นๆ อดอยาก

การตั้งค่าปัจจุบันของฉันคือฉันมีคิวการส่งและผู้ใช้คิวการส่งสองสามคิวจะใช้ข้อความจากคิวนั้นทีละรายการ แบ่งการส่งออกเป็นไฟล์แต่ละไฟล์ และส่งไปยังคิวไฟล์ และกล่องลงนาม 6 กล่องจะเป็นผู้บริโภค 6 รายสำหรับคิวไฟล์ ฉันมีปัญหาในการเขียนผลลัพธ์กลับไปยังผู้บริโภคที่ส่งซึ่งติดตามว่าไฟล์ทั้งหมดเสร็จสิ้นสำหรับการส่งนี้หรือไม่ และฉันไม่สามารถควบคุมจำนวนกล่องลงนามสูงสุดที่ใช้สำหรับแต่ละงานได้

ฉันดูการตั้งค่า RPC สำหรับ rabbitmq ซึ่งอนุญาตให้เขียนผลลัพธ์กลับได้ ปัญหาคือการเรียก rpc บล็อกสำหรับแต่ละไฟล์ และฉันต้องการให้หลายไฟล์สำหรับการส่งเดียวกันเพื่อให้สามารถลงชื่อเข้าใช้แบบขนานได้ ดังนั้นฉันจึงต้องการคำแนะนำเกี่ยวกับสถาปัตยกรรม rabbitmq และโฟลว์ข้อความสำหรับสถานการณ์ประเภทนี้


person Shengcong Wang    schedule 09.02.2016    source แหล่งที่มา


คำตอบ (1)


1) สมมติว่าคุณทราบจำนวนไฟล์ ให้กำหนดรหัสงานที่ส่งแต่ละครั้ง

2) งานสามารถประกอบด้วยหลายงาน

3) คำนวณลำดับความสำคัญซึ่งอาจเป็นสิ่งที่ตรงกันข้ามกับจำนวนเอกสารอย่างไร้เดียงสา ดังนั้นเอกสารที่มี # เอกสารมากกว่าโดยค่าเริ่มต้นจึงมีลำดับความสำคัญต่ำกว่า ใบสมัครของคุณควรมีข้อดีในการปรับแต่งลำดับความสำคัญ เผื่อไว้ในกรณีที่จำเป็นต้องประมวลผลงานที่ใหญ่กว่าโดยมีลำดับความสำคัญสูง

4) แทนที่จะเชื่อมโยงผู้ส่งงานและผู้ลงนาม ทำไมไม่ใช้กลไกตามเหตุการณ์ที่ส่งเสียงเหตุการณ์เมื่อสัญญาณสำเร็จและล้มเหลว หรือกำลังประมวลผลสำหรับแต่ละงานอยู่

ผู้ส่งจะคงรายละเอียดงานและงานไว้ และผู้ลงนามจะอัปเดตรายละเอียดเหล่านั้นเมื่อได้รับการประมวลผล ผู้ส่งจะคำนึงถึงลำดับความสำคัญและไม่มีงานที่กำลังดำเนินการอยู่ก่อนที่จะส่งงานเพิ่มเติมใดๆ ตรรกะในการโทรนั้นเป็นหน้าที่ของคุณ

person JVXR    schedule 09.02.2016