תחילת העבודה עם פרד ESB

1. סקירה כללית

Mule ESB הוא אוטובוס שירות ארגוני קל מבוסס Java. זה מאפשר למפתחים לחבר מספר יישומים יחד על ידי החלפת נתונים בפורמטים שונים. הוא נושא נתונים בצורה של הודעה.

ESBs מציעים יכולות רבות עוצמה על ידי מתן מספר שירותים, כגון:

  • יצירת ואירוח שירותים
  • גישור שירות
  • ניתוב הודעות
  • טרנספורמציה של נתונים

אנו מוצאים ESBs שימושיים אם נצטרך לשלב מספר יישומים יחד, או אם יש לנו רעיון להוסיף יישומים נוספים בעתיד.

ESB משמש גם להתמודדות עם יותר מסוג אחד של פרוטוקול תקשורת וכאשר נדרשות יכולות ניתוב הודעות.

בואו ניצור פרויקט לדוגמא בסעיף 5 באמצעות AnyPoint Studio אשר זמין להורדה כאן.

2. מבנה מסרים של פרד

במילים פשוטות, המטרה העיקרית של ESB היא לתווך בין שירותים לנתב הודעות לנקודות קצה שונות. אז זה צריך להתמודד עם סוגים שונים של תוכן או מטען.

מבנה המסר מחולק לשני חלקים:

  • הכותרת, אשרמכיל מטא נתונים של הודעה
  • המטען המכיל נתונים ספציפיים לעסקים

ההודעה מוטמעת בתוך אובייקט הודעה. אנו יכולים לאחזר את מושא ההודעה מההקשר. אנו יכולים לשנות את מאפייניו ואת מטעןו באמצעות רכיבי Java ושנאים מותאמים אישית בתוך זרימת Mule.

כל יישום מורכב מזרימה אחת או יותר.

בזרימה נוכל להשתמש ברכיבים כדי לגשת, לסנן או לשנות הודעה ותכונותיה השונות.

לדוגמא, אנו יכולים להשיג מופע של הודעה באמצעות רכיב Java. מחלקת רכיבים זו מיישמת א ניתן להתקשר ממשק מ org.mule.api.lifecycle חֲבִילָה:

אובייקט ציבורי onCall (MuleEventContext eventContext) זורק Exception {MuleMessage message = eventContext.getMessage (); message.setPayload ("מטען המסרים משתנה כאן."); הודעת החזרה; }

3. מאפיינים ומשתנים

מטא נתונים של הודעה מורכבים ממאפיינים. משתנים מייצגים נתונים על הודעה. אופן יישום המאפיינים והמשתנים לאורך מחזור החיים של המסר מוגדר על ידי היקפיהם. מאפיינים יכולים להיות משני סוגים, בהתבסס על היקפם: נכנס ויוצא.

נכסים נכנסים מכילים מטה-נתונים המונעים התערבות של הודעות תוך כדי חציית זרימות. המאפיינים הנכנסים אינם ניתנים לשינוי ולא ניתן לשנותם על ידי המשתמש. הם נמצאים רק למשך הזרימה - ברגע שההודעה יוצאת מהזרם, המאפיינים הנכנסים כבר אינם שם.

נכסים יוצאים ניתן להגדיר באופן אוטומטי על ידי Mule, או שמשתמש יכול להגדיר אותם באמצעות תצורת זרימה. מאפיינים אלה ניתנים לשינוי. הם הופכים למאפיינים נכנסים כאשר הודעה נכנסת לזרימה אחרת לאחר חציית מחסומי התחבורה.

אנו יכולים להגדיר ולקבל מאפיינים יוצאים ונכנסים בהתאמה על ידי קריאה לשיטות הגדר וגטר הקשורות להיקף:

message.setProperty ("outboundKey", "outboundpropertyvalue", PropertyScope.OUTBOUND); String inboundProp = (String) message.getInboundProperty ("outboundKey");

ישנם שני סוגים של משתנים שניתן להצהיר עליהם ביישומים.

האחד הוא משתנה זרימה שהוא מקומי לזרימה של פרד וזמין על פני הזרימה, זרמי המשנה והזרמים הפרטיים.

משתני מושבים שהוכרזו פעם הופכים לזמינים בכל היישום.

4. חסמי תחבורה ו flow-ref

מחסומי תחבורה הם מחברי HTTP, מחשבי VM, JMS או מחברים דומים הדורשים נתיבים או נקודות קצה כדי לנתב הודעות. משתני זרימה אינם זמינים על פני מחסומי תחבורה, אך משתני הפעלה זמינים בכל הפרויקט בכל הזרימות.

כאשר עלינו ליצור זרימת משנה או זרימה פרטית, אנו יכולים להתייחס לזרימה מהורה או מזרימה אחרת באמצעות flow-ref רְכִיב. משתני זרימה ומשתני הפעלה זמינים בתזרימי משנה ובתזרים פרטיים המכונים באמצעות flow-ref.

5. פרויקט לדוגמא

בואו ליצור יישום ב- Anypoint Studio שמכיל מספר זרימות, שמתקשר ביניהם דרך מחברים נכנסים ויוצאים.

בואו נסתכל על הזרימה הראשונה:

אנו יכולים להגדיר מאזין HTTP כ:

רכיבי הזרימה חייבים להיות בתוך a תָג. אז, זרימה לדוגמה עם מספר רכיבים היא:

בתוך הזרימה אנו מספקים הפניה למאזין HTTP מוגדר. לאחר מכן אנו מחזיקים לוגר כדי לרשום את המטען שמאזין HTTP מקבל באמצעות שיטת POST.

לאחר מכן, ממוקמת מחלקת שנאי Java מותאמת אישית, אשר הופכת את המטען לאחר קבלת ההודעה:

אובייקט ציבורי transformMessage (הודעת MuleMessage, מחרוזת פלט קידוד) זורק TransformerException {message.setPayload ("מטען מועבר לכאן."); message.setProperty ("outboundKey", "outboundpropertyvalue", PropertyScope.OUTBOUND); הודעת החזרה; }

מחלקת השנאי חייבת להאריך AbstractMessageTransformer. אנו מגדירים נכס יוצא בתוך הכיתה.

כעת, כבר המירו מטען בתוך אובייקט ההודעה, ורשמנו אותו במסוף באמצעות לוגר. אנו מגדירים משתנה זרימה ומשתנה הפעלה.

לבסוף, אנו שולחים את מטען המטען שלנו דרך מחבר VM יוצא. הנתיב במחבר ה- VM קובע את נקודת הקצה המקבלת:

המסר המועבר והופך בזרימה הראשונית מגיע זרימה 1 דרך נקודת קצה של VM נכנסת.

רכיב Java מאחזר מאפיינים יוצאים שנקבעו על ידי הזרימה הראשונה ומחזיר את האובייקט שהופך להיות מטען ההודעה.

ה transformMessage () שיטה למשימה זו:

אובייקט ציבורי transformMessage (הודעת MuleMessage, מחרוזת פלט קידוד) זורק את TransformerException {return (String) message.getInboundProperty ("outboundKey"); }

לאחר מכן, משתני זרימה והפעלה מוגדרים לזרימה השנייה. אחרי זה יש לנו התייחסות זרימה 2 באמצעות flow-ref רְכִיב.

ב Flow2, שינינו את ההודעה באמצעות מחלקת רכיבי Java ורשמנו אותה במסוף. הגדרנו גם משתנה זרימה F3.

אחרי שהתקשר זרימה 2 באמצעות flow-ref, Flow1 ימתין לעיבוד ההודעה זרימה 2.

כל משתנה זרימה שהוגדר ב זרימה 1 ו זרימה 2 יהיו זמינים בשני הזרימות מכיוון שזרמים אלה אינם מופרדים על ידי חסמי תחבורה כלשהם.

לבסוף, ההודעה נשלחת חזרה למבקש ה- HTTP באמצעות מחשבי VM. הגדרנו את כל מחשבי ה- VM כתגובת בקשה.

אנו יכולים להפעיל יישום זה מכל לקוח REST על ידי פרסום כל נתוני JSON בגוף. כתובת האתר תהיה מקום אירוח: 8081 כפי שהוגדר במאזין HTTP.

6. ארב-טיפוס של מייבן

אנו יכולים לבנות פרויקט ESB של Mule באמצעות ארכיטיפ Maven של Mulesoft.

אצל מייבן settings.xml ראשית עלינו להוסיף את org.mule.tools קבוצת תוספים:

 org.mule.tools 

לאחר מכן, עלינו להוסיף א פּרוֹפִיל תגית שאומרת איפה Maven צריך לחפש חפצים של Mulesoft:

 Mule Org נכון mulesoft משחרר מאגר MuleSoft //repository-master.mulesoft.org/releases/ ברירת מחדל 

לבסוף, אנו יכולים ליצור את הפרויקט באמצעות mule-project-archetype: ליצור:

mvn mule-project-archetype: create -DartifactId = muleesb -DmuleVersion = 3.9.0

לאחר הגדרת התצורה של הפרויקט שלנו, אנו יכולים ליצור ארכיון שניתן לפרוס באמצעות חבילת mvn.

לאחר מכן, נפרוס את הארכיון אל ה- אפליקציות תיקייה של כל שרת פרדות עצמאי.

7. שרת פרדות עצמאי דרך מאגר Maven של MuleSoft

כפי שצוין זה עתה, הפרויקט שיצרנו זה עתה דורש שרת Mule עצמאי.

אם עדיין אין לנו, נוכל לערוך את זה pom.xml לשלוף אחד ממאגר MavenSoft של MuleSoft:

 org.mule.tools.maven mule-maven-plugin 2.2.1 עצמאי 3.9.0 לפרוס לפרוס לפרוס 

8. מסקנה

במאמר זה עברנו מושגים הכרחיים שונים של בנייה כיישום ESB ב- Mule. יצרנו פרויקט לדוגמא הממחיש את כל המושגים המתוארים.

כעת אנו יכולים להתחיל ליצור יישום ESB באמצעות Anypoint Studio כדי לענות על הצרכים השונים שלנו.

כרגיל, ניתן למצוא את הפרויקט השלם ב- GitHub.

1. סקירה כללית

Mule ESB הוא אוטובוס שירות ארגוני קל מבוסס Java. זה מאפשר למפתחים לחבר מספר יישומים יחד על ידי החלפת נתונים בפורמטים שונים. הוא נושא נתונים בצורה של הודעה.

ESBs מציעים יכולות רבות עוצמה על ידי מתן מספר שירותים, כגון:

  • יצירת ואירוח שירותים
  • גישור שירות
  • ניתוב הודעות
  • טרנספורמציה של נתונים

אנו מוצאים ESBs שימושיים אם עלינו לשלב מספר יישומים יחד, או אם יש לנו רעיון להוסיף יישומים נוספים בעתיד.

ESB משמש גם להתמודדות עם יותר מסוג אחד של פרוטוקול תקשורת וכאשר נדרשות יכולות ניתוב הודעות.

בואו ניצור פרויקט לדוגמא בסעיף 5 באמצעות סטודיו AnyPoint אשר זמין להורדה כאן.

2. מבנה מסרים של פרד

במילים פשוטות, המטרה העיקרית של ESB היא לתווך בין שירותים ולנתב הודעות לנקודות קצה שונות. אז זה צריך להתמודד עם סוגים שונים של תוכן או מטען.

מבנה המסר מחולק לשני חלקים:

  • הכותרת, אשרמכיל מטא נתונים של הודעה
  • המטען המכיל נתונים ספציפיים לעסקים

ההודעה מוטמעת בתוך אובייקט הודעה. אנו יכולים לאחזר את מושא ההודעה מההקשר. אנו יכולים לשנות את מאפייניו ואת מטעןו באמצעות רכיבי Java ושנאים מותאמים אישית בתוך זרימת Mule.

כל יישום מורכב מזרימה אחת או יותר.

בזרימה נוכל להשתמש ברכיבים כדי לגשת, לסנן או לשנות הודעה ותכונותיה השונות.

לדוגמא, אנו יכולים להשיג מופע של הודעה באמצעות רכיב Java. מחלקת רכיבים זו מיישמת א ניתן להתקשר ממשק מ org.mule.api.lifecycle חֲבִילָה:

אובייקט ציבורי onCall (MuleEventContext eventContext) זורק Exception {MuleMessage message = eventContext.getMessage (); message.setPayload ("מטען המסרים משתנה כאן."); הודעת החזרה; }

3. מאפיינים ומשתנים

מטא נתונים של הודעה מורכבים ממאפיינים. משתנים מייצגים נתונים אודות הודעה. אופן יישום המאפיינים והמשתנים לאורך מחזור החיים של המסר מוגדר על ידי היקפיהם. מאפיינים יכולים להיות משני סוגים, בהתבסס על היקפם: נכנס ויוצא.

נכסים נכנסים מכילים מטה-נתונים המונעים התערבות של הודעות תוך כדי חציית זרימות. מאפיינים נכנסים אינם ניתנים לשינוי ולא ניתן לשנותם על ידי המשתמש. הם נמצאים רק למשך הזרימה - ברגע שההודעה יוצאת מהזרם, המאפיינים הנכנסים כבר אינם שם.

נכסים יוצאים ניתן להגדיר באופן אוטומטי על ידי Mule, או שמשתמש יכול להגדיר אותם באמצעות תצורת זרימה. מאפיינים אלה ניתנים לשינוי. הם הופכים למאפיינים נכנסים כאשר הודעה נכנסת לזרימה אחרת לאחר חציית מחסומי התחבורה.

אנו יכולים להגדיר ולקבל מאפיינים יוצאים ונכנסים בהתאמה על ידי קריאה לשיטות הגדר וגטר הקשורות להיקף:

message.setProperty ("outboundKey", "outboundpropertyvalue", PropertyScope.OUTBOUND); String inboundProp = (String) message.getInboundProperty ("outboundKey");

ישנם שני סוגים של משתנים הזמינים להצהרה ביישומים.

האחד הוא משתנה זרימה שהוא מקומי לזרימה של פרד וזמין על פני הזרימה, זרמי המשנה והזרמים הפרטיים.

משתני מושבים שהוכרזו פעם הופכים לזמינים בכל היישום.

4. חסמי תחבורה ו flow-ref

מחסומי תחבורה הם מחברי HTTP, מחשבי VM, JMS או מחברים דומים הדורשים נתיבים או נקודות קצה כדי לנתב הודעות. משתני זרימה אינם זמינים על פני מחסומי תחבורה, אך משתני הפעלה זמינים בכל הפרויקט בכל הזרימות.

כאשר עלינו ליצור זרימת משנה או זרימה פרטית, אנו יכולים להתייחס לזרימה מהורה או מזרימה אחרת באמצעות flow-ref רְכִיב. משתני זרימה ומשתני הפעלה זמינים בתזרימי משנה ובתזרים פרטיים המכונים באמצעות flow-ref.

5. פרויקט לדוגמא

בואו ליצור יישום ב- Anypoint Studio שמכיל מספר זרימות, שמתקשר ביניהם דרך מחברים נכנסים ויוצאים.

בואו נסתכל על הזרימה הראשונה:

אנו יכולים להגדיר מאזין HTTP כ:

רכיבי הזרימה חייבים להיות בתוך a תָג. אז, דוגמה לזרימה עם מספר רכיבים היא:

בתוך הזרימה אנו מספקים הפניה למאזין HTTP מוגדר. לאחר מכן אנו מחזיקים לוגר כדי לרשום את המטען שמאזין HTTP מקבל באמצעות שיטת POST.

לאחר מכן, ממוקמת מחלקת שנאי Java מותאמת אישית, אשר הופכת את המטען לאחר קבלת ההודעה:

אובייקט ציבורי transformMessage (הודעת MuleMessage, מחרוזת פלט קידוד) זורק TransformerException {message.setPayload ("מטען מועבר לכאן."); message.setProperty ("outboundKey", "outboundpropertyvalue", PropertyScope.OUTBOUND); הודעת החזרה; }

מחלקת השנאי חייבת להאריך AbstractMessageTransformer. אנו מגדירים נכס יוצא בתוך הכיתה.

כעת, כבר המירו מטען בתוך אובייקט ההודעה, ורשמנו אותו במסוף באמצעות לוגר. אנו מגדירים משתנה זרימה ומשתנה הפעלה.

לבסוף, אנו שולחים את מטען המטען שלנו דרך מחבר VM יוצא. הנתיב במחבר ה- VM קובע את נקודת הקצה המקבלת:

המסר המועבר והופך בזרימה הראשונית מגיע זרימה 1 דרך נקודת קצה של VM נכנסת.

רכיב Java מאחזר מאפיינים יוצאים שנקבעו על ידי הזרימה הראשונה ומחזיר את האובייקט שהופך להיות מטען ההודעה.

ה transformMessage () שיטה למשימה זו:

אובייקט ציבורי transformMessage (הודעת MuleMessage, מחרוזת פלט קידוד) זורק את TransformerException {return (String) message.getInboundProperty ("outboundKey"); }

לאחר מכן, משתני זרימה והפעלה מוגדרים לזרימה השנייה. אחרי זה יש לנו התייחסות זרימה 2 באמצעות flow-ref רְכִיב.

ב Flow2, שינינו את ההודעה באמצעות מחלקת רכיבי Java ורשמנו אותה במסוף. הגדרנו גם משתנה זרימה F3.

אחרי שהתקשר זרימה 2 באמצעות flow-ref, Flow1 ימתין לעיבוד ההודעה זרימה 2.

כל משתנה זרימה שהוגדר זרימה 1 ו זרימה 2 יהיו זמינים בשני הזרימות מכיוון שזרמים אלה אינם מופרדים על ידי חסמי תחבורה כלשהם.

לבסוף, ההודעה נשלחת חזרה למבקש ה- HTTP באמצעות מחשבי VM. הגדרנו את כל מחשבי ה- VM כתגובת בקשה.

אנו יכולים להפעיל יישום זה מכל לקוח REST על ידי פרסום כל נתוני JSON בגוף. כתובת האתר תהיה מקום אירוח: 8081 כפי שהוגדר במאזין HTTP.

6. ארב-טיפוס של מייבן

אנו יכולים לבנות פרויקט ESB של Mule באמצעות ארכיטיפ Maven של Mulesoft.

אצל מייבן settings.xml ראשית עלינו להוסיף את org.mule.tools קבוצת תוספים:

 org.mule.tools 

לאחר מכן, עלינו להוסיף א פּרוֹפִיל תגית שאומרת איפה Maven צריך לחפש חפצים של Mulesoft:

 Mule Org נכון mulesoft משחרר מאגר MuleSoft //repository-master.mulesoft.org/releases/ ברירת מחדל 

לבסוף, אנו יכולים ליצור את הפרויקט באמצעות mule-project-archetype: ליצור:

mvn mule-project-archetype: create -DartifactId = muleesb -DmuleVersion = 3.9.0

לאחר הגדרת התצורה של הפרויקט שלנו, אנו יכולים ליצור ארכיון הניתן לפריסה באמצעות חבילת mvn.

לאחר מכן, נפרוס את הארכיון אל ה- אפליקציות תיקייה של כל שרת פרדות עצמאי.

7. שרת פרדות עצמאי דרך מאגר Maven של MuleSoft

כפי שצוין זה עתה, הפרויקט שיצרנו זה עתה דורש שרת Mule עצמאי.

אם עדיין אין לנו, נוכל לערוך את זה pom.xml לשלוף אחד ממאגר MavenSoft של MuleSoft:

 org.mule.tools.maven mule-maven-plugin 2.2.1 עצמאי 3.9.0 לפרוס לפרוס לפרוס 

8. מסקנה

במאמר זה עברנו מושגים הכרחיים שונים של בנייה כיישום ESB ב- Mule. יצרנו פרויקט לדוגמא הממחיש את כל המושגים המתוארים.

כעת אנו יכולים להתחיל ליצור יישום ESB באמצעות Anypoint Studio כדי לענות על הצרכים השונים שלנו.

כרגיל, ניתן למצוא את הפרויקט השלם באתר GitHub.


$config[zx-auto] not found$config[zx-overlay] not found