مشكلة ارسال بريد يرسل اكثر من مرة notification قد تصل للمئة
احيانا يحدث مشكلة في الانظمة وترسل عدد كبير من الرسائل الى احد الاشخاص المسجلين في النظام مما يوقعنا في الحرج
كيف اعمل مراقبة واحد من هذا الخطأ
هل يوجد مثلا اداة monitoring مثلا اضيفها تعمل منع لارسال البريد نفسه اكثر من مرة
المهم ان اضمن ان رسالة واحدة تصل للعميل
* ملاحظة الكود البرمجي سليم ولا مشكلة فيه والانظمة تعتمد على .net
وشكرا لكم
ساعد بالإجابة
"إن في قضاء حوائج الناس لذة لا يَعرفها إلا من جربها، فافعل الخير مهما استصغرته فإنك لا تدري أي حسنة تدخلك الجنة."
الإجابات (1)
اخي, فيه طرق كثيييره لحل المشكله ذي.
لاكن انا بطريقتي راح اقلك كيف ممكن اتعامل معاها اتمنى تفيدك اخي.
اول خطوة ارتب الكود الى 3 مراحل.
1- طلب ارسال, 2- ارسال فعلياً, 3- اشعار بأن النظام ارسل. حلو؟
في "طلب ارسال" تتجمع طلبات الارسال مثلا في Queue او Array جاهزه للتنفيذ.
في "ارسال فعلياً" كود يستخدم تقنية "synchronization" البرمجية (موجودة بأغلب اللغات) الان سوف اشرح لك لماذا Synchronized Functions
الكود يسيرله execute بأكثر من Thread حلو؟ فلذلك هناك احتمال اكثر من Thread يسوي execute للكود حق الارسال وهنا تسير مشكلتك.
حلها هو ان نتأكد 100% ان بس 1 Thread يسوي execute للكود حق الارسال. وهذا يسير بإستخدام Synchronized functions.
وراح تتأكد ان مافيه ارساليه تتعارض مع ارساليه, ولا تكرار للأرساليات.
مثلا:
بترسل لـ احمد, وفيصل. فترسل طلب بإرسال تهنئة لأحمد, وتعزية لفيصل. هذي الطلبات تروح داخل Queue او Array. ثم "ترسل فعلياً" بدال ما ياخذ كلن من احمد وفيصل ويرسلهم في نفس الوقت. نستخدم synchronized functions مع Boolean حتى نتاكد تم الارسال لاحمد, ثم بعد نحذف احمد من الArray او Queue. ثم نعاود الارسال.
مثال بJava :
class Hussain extends Thread
{
private String msg;
private Thread t;
Sender sender; // Sender object
// Recieves a message object and a string
// message to be sent
Hussain(String m, Sender obj)
{
msg = m;
sender = obj;
}
public void run()
{
// Only one thread can send a message
// at a time.
synchronized(sender)
{
// synchronizing the snd object
sender.send(msg);
}
}
}
اتمنى افدتك. اخوك حسين.
لايوجد لديك حساب في عالم البرمجة؟
تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !