ส่ง SMS ผ่าน SMPP ด้วยอูฐ

กลยุทธ์ที่ดีที่สุดในการส่ง SMS ผ่าน SMPP ด้วย Camel คืออะไร ฉันควรใช้ ProducerTemplate หรือไม่

ฉันยังใหม่กับอูฐ ดังนั้นฉันจึงไม่มั่นใจว่ากลยุทธ์ของฉันดีที่สุดหรือไม่

ในใบสมัครของฉันเมื่อได้รับ SMS ฉันต้องส่ง SMS อื่นกลับมาพร้อมกับเนื้อหาที่คำนวณไว้บางส่วน

ฉันสร้าง เส้นทาง smsIn ที่มีลักษณะเช่นนี้

from "uri=smpp ..."
unmarshal ref="bindyDataFormat"
to "uri=bean:myBean

และ เส้นทาง smsOut ด้วย

from "uri=direct:smsOut"
to "uri=smpp ..."

เส้นทาง smsIn รับ SMS แปลงเนื้อหา (ข้อมูล csv) ใน pojo และส่ง pojo นั้นไปที่ myBean

ใน myBean ฉันทำการประมวลผลบางอย่าง จากนั้นเรียก ProducerTemplate ซึ่งส่งข้อความที่คำนวณแล้วของฉันไปยังปลายทาง "direct:smsOut"

เหตุผลที่ฉันใช้ ProducerTemplate คือฉันต้องตั้งค่าข้อมูลบางอย่างจาก pojo ของฉันในส่วนหัว (CamelSmppDestAddr) และเนื้อหาของ Exchange

ฉันได้ทดสอบกับตัวจำลอง Logica SMSC แล้วดูเหมือนว่าจะทำงานได้ดี แต่ต้องการความคิดเห็นของคุณเกี่ยวกับวิธีแก้ปัญหานี้หรือไม่

สิ่งที่เกี่ยวกับความน่าเชื่อถือการทำธุรกรรม? ฉันควรเก็บข้อความไว้ก่อนที่จะพยายามส่งไปยัง SMSC หรือไม่ ฉันควรเก็บไว้ในฐานข้อมูลโพสต์ลงในคิวหรือไม่?


person Frederic Close    schedule 07.06.2012    source แหล่งที่มา


คำตอบ (1)


ฉันไม่แน่ใจว่าทำไมคุณถึงมีเทมเพลตผู้ผลิต คุณสามารถสร้างเส้นทางแทนได้ (เนื่องจากคุณส่งคืนบางสิ่งจาก bean ของคุณหรือใช้ Exchange เป็นพารามิเตอร์)

<from uri="smpp: ..."/>
  <bean ref="bean:myBean"/>
  <to uri="jms:queue:myQueue"/>

จากนั้นไม่ใช้โดยตรง แต่ใช้คิว JMS ที่เป็นธุรกรรมและคงอยู่ สมมติว่าการโทร smpp ของคุณล้มเหลว ข้อความจะหายไป การใช้คิวเช่นนี้และตรวจสอบให้แน่ใจว่าคิวเป็นธุรกรรม คุณจะมั่นใจได้ว่าจะไม่สูญเสียข้อมูลในขั้นตอนนี้ของเส้นทาง

 <from uri="jms:queue:myQueue"/>
   <transactional/>
   <to uri="smpp.."/>

ฉันแนะนำให้ใช้ Apache ActiveMQ เป็นมิดเดิลแวร์ JMS จริงๆ แล้ว ถ้าคุณดาวน์โหลด ActiveMQ คุณจะได้รับชุด Camel ไปด้วย ดังนั้นคุณจึงสามารถรันเส้นทาง Camel ของคุณจาก ActiveMQ ได้

คุณอาจต้องการปรับแต่งวิธีการลองใหม่และการจัดการข้อผิดพลาดโดยขึ้นอยู่กับสิ่งที่คุณต้องการให้เกิดขึ้น (ลองใหม่ทุก ๆ วินาทีตลอดไป ลองอีกครั้งห้าครั้ง จากนั้นเข้าสู่คิวข้อผิดพลาด ฯลฯ) อ่านหน้านี้: การจัดการข้อผิดพลาดในธุรกรรมใน Camel

หากต้องการข้อมูลที่ละเอียดยิ่งขึ้นและการปรับแต่งเพิ่มเติม คุณอาจต้องการอ่านสิ่งนี้: ลูกค้าธุรกรรม

person Petter Nordlander    schedule 08.06.2012
comment
ฉันอัปเดตคำถามของฉันแล้ว เหตุผลที่ฉันใช้ ProducerTemplate คือบริการที่อ้างถึงเป็น myBean ในเส้นทาง smsIn ใช้ java Pojo เป็นอินพุต ฉันต้องใช้ข้อมูลบางอย่างของ pojo นั้นและตั้งไว้ในส่วนหัวของการแลกเปลี่ยนและเนื้อหาของมัน - person Frederic Close; 08.06.2012
comment
โอเค ถ้าคุณเลือกที่จะไปทางนั้น มันอาจจะดีก็ได้ วิธีที่แนะนำของฉันกับ JMS สำหรับการคงอยู่/การทำธุรกรรมยังคงใช้อยู่ คุณสามารถส่งข้อความ JMS ด้วยเทมเพลตได้เช่นกัน ไม่ใช่เรื่องใหญ่ - person Petter Nordlander; 08.06.2012