שימוש בגמל אפאצ'י עם אביב

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

מאמר זה ידגים כיצד להגדיר ולהשתמש ב- Apache Camel עם Spring.

Apache Camel מספק די הרבה רכיבים שימושיים התומכים בספריות כמו JPA, Hibernate, FTP, Apache-CXF, AWS-S3 וכמובן רבים אחרים - הכל כדי לסייע בשילוב נתונים בין שתי מערכות שונות.

לדוגמה, באמצעות רכיבי ה- Hibernate ו- Apache CXF, אתה יכול לשלוף נתונים ממסד נתונים ולשלוח אותם למערכת אחרת באמצעות שיחות REST API.

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

להלן הפרטים המלאים של הדוגמה:

  1. קרא את הקובץ מספריית המקור
  2. המרת תוכן קובץ לאותיות רישיות באמצעות מעבד מותאם אישית
  3. כתוב פלט המרה לספריית יעד
  4. המרת תוכן קובץ לאותיות קטנות באמצעות מתרגם גמלים
  5. כתוב פלט המרה לספריית יעד

2. הוסף תלות

כדי להשתמש ב- Apache Camel עם Spring, תזדקק לתלות הבאה בקובץ POM שלך:

 2.16.1 4.2.4.RELEASE org.apache.camel core-core $ {env.camel.version} org.apache.camel-camel-spring $ {env.camel.version} org.apache.camel stream-camel $ { env.camel.version} org.springframework spring-context $ {env.spring.version} 

אז יש לנו:

  • ליבת גמלים - התלות העיקרית בגמל אפאצ'י
  • קפיץ-גמלים - מאפשר לנו להשתמש בגמל עם אביב
  • זרם גמלים - תלות אופציונלית, בה תוכלו להשתמש (למשל) כדי להציג כמה הודעות בקונסולה בזמן שהמסלולים פועלים
  • אביב-הקשר - תלות האביב הסטנדרטית, הנדרשת במקרה שלנו כשאנחנו הולכים לרוץ מסלולי גמלים בהקשר האביבי

3. הקשר גמל אביב

ראשית, ניצור את קובץ ה- Config Spring בו נגדיר אחר כך את מסלולי הגמל שלנו.

שים לב כיצד הקובץ מכיל את כל מרחבי השמות ומיקומי הסכימה של Apache Camel ו- Spring הנדרשים:

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

3.1. מסלול גמלים עם מעבד מותאם אישית

בשלב הבא נכתוב את המסלול הראשון שלנו להמרת תוכן הקובץ לאותיות גדולות.

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

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

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

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

בנוסף, עלינו להגדיר את myFileProcessor אפונה:

3.2. מעבד רישיות מותאם אישית

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

על השיטה שלנו לקרוא את ההודעה מה- לְהַחלִיף, הגדל את התוכן באותיות רישיות, ואז הגדר את התוכן החדש לתוכנה לְהַחלִיף לְהִתְנַגֵד:

מחלקה ציבורית FileProcessor מיישם מעבד {תהליך חלל ציבורי (Exchange exchange) זורק Exception {String originalFileContent = (String) exchange.getIn (). getBody (String.class); מחרוזת upperCaseFileContent = originalFileContent.toUpperCase (); exchange.getIn (). setBody (upperCaseFileContent); }}

שיטת תהליך זו תבוצע עבור כל קלט המתקבל מהמקור.

3.3. מעבד קטן

כעת נוסיף פלט נוסף למסלול הגמלים שלנו. הפעם, אנו להמיר את נתוני קובץ הקלט באותיות קטנות. הפעם, לא נשתמש במעבד מותאם אישית, עם זאת; נשתמש בתכונה של מתרגם המסרים של Apache Camel. זהו מסלול הגמל המעודכן:

     $ {body.toLowerCase ()} 

4. הפעלת האפליקציה

על מנת לעבד את המסלולים שלנו, עלינו פשוט לטעון את קובץ ההקשר של הגמל בהקשר של יישום אביב:

ClassPathXmlApplicationContext applicationContext = ClassPathXmlApplicationContext חדש ("camel-context.xml"); 

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

5. מסקנה

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

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

הדוגמה המתוארת במאמר זה זמינה בפרויקט ב- GitHub.


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