簡體   English   中英

驗證發布在 Talend esb 中的數據

[英]Validation of data posted in Talend esb

我正在研究 Talend 中的一條路線,該路線應該詢問 api 並將結果數據存儲在隊列中。

我對在 api 上發布的數據進行 2 次驗證的請求存在問題。

其中之一是在字符串中只發布數字和逗號,第二個是最多有 200 個數字(例如:123,34,35,780,01,......逗號之間的數字不超過 200 個

一位同事建議使用正則表達式,我發現這個表達式^[0-9]+(,[0-9]+)*$用於執行第一個需求,但我不知道如何在我的路線中使用它。

我使用 cREST,但我不知道將這個表達式放在哪里進行驗證。

你能幫助我嗎?

謝謝,

奧雷爾

一種可能是在 cREST 組件之后放置一個 cMessageRouter 組件。 然后,您可以拉一個“何時觸發”並輸入一個謂詞,該謂詞將被評估以有條件地將消息發送到您的隊列。 假設您的 API 返回一個原始字符串(在這種情況下,您應該確保將 cREST 組件的 Accept-Type 設置為“任何”)並使用簡單語言,
謂詞可能看起來像"${body} regex '[your regex]'" 如果謂詞評估為假,您可以從 cMessageRouter 中拉出一個“否則觸發”以將消息發送到死信隊列,如下所示。

請注意,您可以讓 cMessageRouter 組件評估多個謂詞並根據滿足的條件將消息發送到不同的目的地。

使用 cMessageRouter 有條件地路由 API 響應的示例

謝謝你的回答!

您的詳細解釋幫助我解決了我的第一個問題,進行了要求的驗證(使用簡單的語言和 ^[0-9]+(,[0-9]+)*$ 表達式)

但是對於第二個問題,有一個謂詞(對於這個謂詞是一個正則表達式)可以幫助我嗎? 這對我有很大幫助,在此先感謝

我找到了可以幫助我的代碼片段,但我找不到從哪里調用此代碼

    String product_pattern = "[0-9]*";
    Pattern idProductPattern = Pattern.compile(product_pattern);
    Matcher countProductsMatcher = idProductPattern.matcher(list);      
    int count = 0;
    while (countProductsMatcher.find()) {
        count++;
    }
    return new Integer(count);  

我把這段代碼放在一個 bean 中,但我無法(從 bean)訪問交換 object.... 有辦法訪問嗎?

非常感謝,奧雷爾

To access the exchange in a bean, add the following import import org.apache.camel.Exchange and set the first parameter of your bean method to be of class Exchange, as in public static Integer yourMethod(Exchange exch) {} .

[https://camel.apache.org/manual/bean-binding.html] 上的文檔。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM