ฉันมีแอปพลิเคชันที่ฉันเขียนโค้ดซึ่งฉันกำลังปรับโครงสร้างใหม่เพื่อให้ใช้งาน Spring Integration ได้ดียิ่งขึ้น แอปพลิเคชันประมวลผลเนื้อหาของไฟล์
ปัญหา (อย่างที่ฉันเห็น) คือการใช้งานปัจจุบันของฉันผ่าน Files
แทนที่จะเป็น Messages
เช่น Spring Integration Messages
เพื่อหลีกเลี่ยงการกลิ้งโค้ดของตัวเองไป ซึ่งฉันต้องบำรุงรักษาในภายหลัง ฉันสงสัยว่ามีโครงสร้างที่แนะนำสำหรับการสร้าง Messages ใน Spring Integration หรือไม่ สิ่งที่ฉันสงสัยคือมีชุดค่าผสมที่แนะนำของ channel
กับบางอย่างเช่น MessageBuilder
ที่ฉันควรใช้หรือไม่
กระบวนการ/รหัส (ในที่สุด)
ฉันยังไม่มีรหัสในการกำหนดค่า แต่ฉันต้องการให้มีส่วนประกอบ/กระบวนการต่อไปนี้:
- รับไฟล์ ลบส่วนหัวและส่วนท้ายของไฟล์ นำแต่ละบรรทัดแล้วแปลงเป็น
Message<String>
(ซึ่งดูเหมือนว่าจะเป็นSplitter
) ที่ฉันส่งไปที่... - Channel/Endpoint ส่งข้อความไปยัง Router
- เราเตอร์ตรวจพบรูปแบบสตริงใน Payload และกำหนดเส้นทางไปยังช่องทางที่เหมาะสมซึ่งคล้ายกับ คำสั่งซื้อ เราเตอร์ที่นี่...
ช่องทางที่เลือกจะสร้างข้อความประเภทที่เหมาะสมโดยเฉพาะข้อความที่พิมพ์ ตัวอย่างเช่นฉันมีตัวสร้างต่อไปนี้เพื่อสร้างข้อความ...
คลาสสาธารณะ ShippedBoxMessageBuilder ใช้ CustomMessageBuilder {
@แทนที่ข้อความสาธารณะ buildMessage (อินพุตสตริง) { ShippedBox shippingBox = (ShippedBox) ShippedBoxFactory.manufactureShippedFile (อินพุต); กลับ MessageBuilder.withPayload(shippedBox).build(); } ...
ข้อความถูกกำหนดเส้นทางตามประเภทไปยังช่องทางการประมวลผลที่เหมาะสม
วิธีแก้ปัญหาที่ฉันตั้งใจไว้ดูเหมือนว่าฉันจะซับซ้อน อย่างไรก็ตาม ฉันได้แยกงานสองอย่างโดยตั้งใจ 1) แบ่งไฟล์ออกเป็น Messages<String>
หลายบรรทัด และ 2) การแปลง Messages<String>
เป็น Messages<someType>
ด้วยเหตุนี้ ฉันคิดว่าฉันต้องการตัวสร้างเราเตอร์/ข้อความเพิ่มเติมสำหรับงานที่สอง