טוב אז יש לי בעייה שאני מנסה לחשוב על פתרון יצירתי.סקירה ראשונית:
יש לי מערכת קליינט סרבר , קליינט שולח בקשות , סרבר מחזיר תשובות.
לסרבר לוקח 1 שניות להחזיר תשובה אלי (בעומס).
לי לא משנה תוך כמה זמן אני מקבל את התשובה , שאני מקבל אותה אני יוצר אובייקט חדש ומעביר אותו הלאה (באיזה שהוא שלב אפשר להניח שאין סינכרון בכלל אבל אחרי 24 שעות הסנכרון חוזר קים downtime במערכת קבוע של 8 שעות ביום).
אין לי אפשרות לשנות את הקוד בצד שרת.
כרגע בצד לקוח אני עובד עם axis ב JAVA.
הבעייה בצד לקוח שהתור שלו מתפוצץ.
כרגע ישנו טרד אחד שעובד על התור , ברגע שיש הודעה הוא שולח אותה ע"י call.invoke ומחכה לתשובה , כרגע המצב הוא שהוא ב blocking.
בצד לקוח מייצרים באיזור ה 50-100 בקשות לשניה.
הפתרון שביצעתי כרגע הוא Thread pool אשר יעבוד בצורה אסינכרונית על התור , אבל השליחה עצמה תשאר סינכרונית.
הפתרון הזה כנראה ידרוש ממני לחתזק בערך 100 טרדים בפול אשר יטפלו לי בבקשות.
חשבתי בנוסף אולי על פתרון של ליצור טרד אחד ששולח הודעות לשרת בסגנון בלי לחכות לתשובה (כמו UDP)
וטרד אחד שיקבל את התשובות בשבילו וידפיס אותם .
או אפילו שילוב של השנים (טרד פול בקבלה )
מה אתם אומרים יש פתרון יצירתי / יעיל יותר ?
תודה.
*פורסם במקביל בפורום תיכנות