משיב מוביל
תיעדוף פניות לתור בשימוש בMSMQ

שאלה
-
מימשתי שימוש בMSMQ כפי שהומלץ לי פה בפורום עבור מספר אפליקציות שרצות במקביל וצריכות להשתמש באותם אוביקטים, בלי ששתיים ישתמשו בו זמנית באותו אוביקט. והכל עובד נפלא.
שאלתי היא, הייתי רוצה לתעדף אפליקציה אחת על פני אחרות באופן שכאשר היא פונה לתור - הבקשה שלה תמיד בעדיפות ראשונה על פני אפליקציות אחרות שפונות.
האם זה אפשרי? או אולי זה נוגד את העיקרון של התור?
תודה
תשובות
-
זה מנוגד לרעיון של תור אבל הכל אפשרי
אפשר למשל לחפש בתור הודעות הודעות מסויימות ולבצע פעולה כלשהי, אפשר למשל להקים 2 תורות, אחד לעדיפות רגילה ואחד לעדיפות מיוחדת.
>> תור זו לא השיטה היחידה למנוע ממישהו אחר לפעול עם אותו אלמנט ואפשר לנהל את השימוש בעזרת נעילות פשוטות (יש סיבה שהצעתי לעבור על נושא תורות מהבסיס תחיה, זה היה נותן את ההבנה הבסיסית של כיצד ליצור תור בלי שימוש במחלקה המובנית, אפר לבנו מחלקה של תור מאפסס אם רוצים ולהוסיף אפשרויות כאלה)
* אני לא יודע אם קיימת אפשרות כזו מובנית ב MSMQ, אני חושב שאין (אבל כמו שכבתתי אפשר לבחור בכמה דרכים)
[Personal Site] [Blog] [Facebook]
- סומן כתשובה על-ידי Eran Sharvit יום חמישי 07 אוגוסט 2014 14:59
כל התגובות
-
זה מנוגד לרעיון של תור אבל הכל אפשרי
אפשר למשל לחפש בתור הודעות הודעות מסויימות ולבצע פעולה כלשהי, אפשר למשל להקים 2 תורות, אחד לעדיפות רגילה ואחד לעדיפות מיוחדת.
>> תור זו לא השיטה היחידה למנוע ממישהו אחר לפעול עם אותו אלמנט ואפשר לנהל את השימוש בעזרת נעילות פשוטות (יש סיבה שהצעתי לעבור על נושא תורות מהבסיס תחיה, זה היה נותן את ההבנה הבסיסית של כיצד ליצור תור בלי שימוש במחלקה המובנית, אפר לבנו מחלקה של תור מאפסס אם רוצים ולהוסיף אפשרויות כאלה)
* אני לא יודע אם קיימת אפשרות כזו מובנית ב MSMQ, אני חושב שאין (אבל כמו שכבתתי אפשר לבחור בכמה דרכים)
[Personal Site] [Blog] [Facebook]
- סומן כתשובה על-ידי Eran Sharvit יום חמישי 07 אוגוסט 2014 14:59
-
במחשבה שניה, זה לא ממש מנוגד לרעיון של תור. זה כמו שכמה אנשים מחכים בתור וביניהם גם ראש הממשלה ומנהל התור נותן עדיפות לראש הממשלה ומשרת אותו לפני אחרים בתור. זה מה שאני רוצה לממש.
אני לא מבינה איך חיפוש הודעות מסוימות בתור יכול לעזור וגם לא שני תורים. אני צריכה שכל האלמנטים יהיו זמינים כל הזמן לכולם ורק במידה שפונה לתור מישהו בעדיפות עליונה והוא צריך לחכות יחד עם אחרים בתור - הוא יוקדם להם כך שברגע שיחזור אלמנט לתור הוא יקבל אותו ולא הם.
אגב, מטרתי פה בשימוש בתור לא היתה רק נעילת האלמנטים שמישהו אחר לא יוכל לפעול איתם אלא גם ניהול שלהם בלי שהתוכנית שרצה תתצטרך לעשות זאת. כמו לדוגמא: אחרי שאלמנט היה בשימוש הוא צריך "לנוח" השהיה מסוימת לפני שהוא חוזר לתור לשימוש אחרים.
אשמח לרעיונות נוספים. בינתיים לא מצאתי פיתרון לזה.
-
הדוגמה שלך היא בדיוק דוגמה שמנוגדת לרעיון של תור. אם מנהל התור נותן עדיפות אז הוא מבטל את התור עבור אדם מסויים. העובדה שיש חוסר שיוויון במועדונים וחלק נכנסים בלי תור זה לא אומר שהם פועלים לפי תור אלא בדיוק שהם פעלים בניגוד לתור ונותנים עדיפות.
העיון של חיפוש בתור הוא בדיוק ותו דבר. אם רוצים לקדם הודעה מסויימת אז אפשר לחפש אותה בתור, להוריד אותה מהתור ולהפעיל אותה, בדיוק כמו שמקדמים אדם ונותנים לו לדלג על התור של כניסה למועדון בילויים. גם הרעיון של 2 תורוים מתאים לדוגמה שלך. זה כמו שבשדה התעופה כשחוזים מחו"ל יש תור לאזרחי המדינה שרק צריכים להעביר את היד במכונה של סריקה ומי שלא רשום במכונה צריך לעבור תור אחר שהוא איטי יותר. יש 2 תורים אחד מהיר ואחד איטי לפי העדיפיות.
לגבי המטרה שלך היא אכן נשמעת כמתאימה למבנה של תור כזה או אחר. את יכולה להקים מחלקה של תור שלך (בדיוק כמו שכתבתי מעל אם מבינים את הכתוב למרות שכתה אותיות חסרות "אפשר לבנות מחלקה של תור מאפסס אם רוצים ולהוסיף אפשרויות כאלה"). במחלקה שבונים לבד אפשר להבחור פתרון מתאים, כמו התבססות על אוסף של אלמנטים, עבודה עם נעלה, ניהול תור עם אפשרות קידום... אפשר גם להיתבסס על המחלקות הקיימות כאמור ולאפשר קידום על ידי חיפוש אלמנט שרוצים לקדם והוצאה שלו מהתור, עצירת התור, הרצה שלו במקביל לתור תוך נעילה, בסיום המשך הרצת התור.
זה הכל רק רעיונות תיאורטיים וצריך ליישם אותם... לפעמים רק תוך כדי יישום הפתרון אפשר לוודא אם הכיוון מתאים, ולפעמים צריך לבחור כיוון חדש ולנסות שוב..
[Personal Site] [Blog] [Facebook]
-
אם תצרפי פרוייקט לדוגמה מקוצר ככל הניתן אפשר יהיה אולי לדון בו ספציפית ולא רק באוויר בתיאוריה, אם זה יצריך יותר זמן :-)
[Personal Site] [Blog] [Facebook]