未來方法與。 Salesforce 中的可排隊 Apex

已發表: 2023-11-20

在快節奏的 Salesforce 開發世界中,了解高效編碼的最佳工具和方法至關重要。 本文深入探討兩個關鍵概念:Future Method 和 Queueable Apex。 兩者都是 Salesforce 中用於處理非同步操作的強大技術,但它們具有不同的功能和用例。

我們將探討 Future Method 和 Queueable Apex 的細微差別,比較它們的功能、優點以及何時在 Salesforce 專案中使用它們。 無論您是經驗豐富的開發人員還是 Salesforce 新手,這種比較都將提供寶貴的見解,幫助您做出優化程式碼的明智決策。

請繼續關注,我們將揭開複雜性並揭示 Salesforce 中 Future Method 和 Queueable Apex 的潛力!

目錄

為什麼選擇未來方法?

如果您想稍後在單獨的執行緒中執行進程並希望非同步執行程式碼,我們需要使用 future 方法。

什麼時候使用?

它們用於長時間運行的操作,例如呼叫外部 Web 服務或您想要在自己的執行緒中執行的任何操作

為什麼要使用可排隊 Apex?

就像 future 也用於執行非同步程式碼一樣,它使您能夠將作業新增至佇列中,並與 future 方法相比增強了執行非同步程式碼的方式。

什麼時候使用?

對於長時間運行的 Apex 進程,例如大量的資料庫操作或外部 Web 服務調出,您可以透過實作 Queueable 介面來非同步運行它們

另請閱讀:如何使用 OAuth 實作 Salesforce SSO?

Future 和可排隊 Apex 之間的差異:

未來法可排隊的 Apex
1. Future 永遠不會用於處理 SObject 或物件類型。

2.使用 future 方法時,我們無法監控正在進行的作業。

3. future方法不能在future或batch類別內部呼叫。

4. future方法永遠不會排隊。

1.可排隊作業可以包含成員變數作為 SObject 或自訂 Apex 類型。

2.當使用可排隊作業時,它將產生我們可以像規劃作業一樣監控的 AsyncApexJob。

3. Queueable Apex可以從future和batch類別呼叫。

4.使用 Queueable Apex 將連結到可排隊作業,在 Developer Edition 中只有 5 個作業。

可排隊的 Apex

Queueable 類別是透過實作預先定義介面「Queueable」所建立的類別。 與 future 方法相比,此介面支援執行非同步作業或作業程式碼的方式。 它將使您能夠監視佇列中的作業(該佇列是由 Queueable 介面建立的,以便作業可以非同步執行)。

句法:

 public class <Queueable 類別的名稱> 實作 Queueable {
//這是Queueable介麵包含的唯一方法,並且需要在Queueable類別中繼承該方法。
公共無效執行(QueueableContext上下文){
//需要執行的程式碼
}
}

任何需要長時間執行的 Apex 進程(例如大量資料庫操作或外部 Web 服務調出)都可以透過實作 Queueable 介面並將作業新增至 Apex 作業佇列來非同步執行它們。

您的非同步 Apex 作業會在自己的執行緒中在背景執行,並且不會延遲主 Apex 邏輯的執行。 每個排隊作業在系統資源可用時執行。 使用介面方法的一個好處是某些調控器限制高於同步 Apex,例如堆疊大小限制。

未來頂點法

Future apex 用於在系統資源可用時在單獨的執行緒中執行進程。 為了使用 future apex,我們不需要建立任何類,我們只需要使用「@future」註解來標識非同步運行的方法,並表示該註釋下面描述的方法是 future 方法。

使用同步處理時,所有方法呼叫均從執行 Apex 程式碼的相同執行緒進行,並且在該過程完成之前不會發生任何其他處理。 您可以使用 future 方法來執行您想要在自己的執行緒中非同步運行的任何操作。 這樣做的好處是不會阻止使用者執行其他操作,並為進程提供更高的調控器和執行限制。
句法:

 全域類別 <類別名稱> {
//下面是 future 註釋,它定​​義給定的方法是 future 方法。
@未來
公用靜態無效 <FutureMethodName>(List<Id> recordIds) {
List<聯絡人> 帳戶 = [從聯絡人中選擇 ID、名字、姓氏,其中 Id IN :recordIds];
// 處理聯絡人記錄來做一些很棒的事情
}
}

另請閱讀:如何連接 Pipedrive 和 Salesforce 整合?

未來的方法通常用於

對外部 Web 服務的呼叫。 如果您從觸發器進行調出或在執行 DML 操作後進行調用,則必須使用 future 或可排隊方法。 觸發器中的標註將在標註的生命週期內保持資料庫連線開啟。

當時間允許時您希望在自己的執行緒中執行的操作,例如某種資源密集型運算或記錄處理

注意:物件的原因不能作為參數傳遞給未來的方法,因為物件可以在您呼叫該方法的時間和它實際執行的時間之間發生變化。 未來的方法將在系統資源可用時運作。 當未來的方法執行時,它可能具有舊的物件值,這可能會導致各種不好的事情發生。

要記住的事情

  • future 方法必須是靜態的
  • 傳回型別必須為 void
  • 指定的參數必須是原始資料型別、原始資料型別數組或原始資料型別集合
  • 您可以像呼叫任何其他方法一樣呼叫未來的方法。 但是,一個 future 方法不能呼叫另一個 future 方法
  • 每次 Apex 呼叫不超過 50 次方法調用
  • 在 startTest、stopTest 區塊中呼叫的非同步呼叫(例如@future 或executeBatch)不會計入排隊作業數量的限制
聘請銷售人員開發人員

Future 方法和可排隊類別的範例

Future 方法和可排隊類

這裡我得到了 4 種貨幣的加幣價值。 適用於英鎊、美元、澳幣、加幣。 並將數值儲存為自訂元資料貨幣。 對於這裡的 HTTPREQUEST,我使用了 Future 方法。 因為它在執行批次時同時更新多個記錄,所以我使用了 Queueable Apex,它一次更新多個記錄。

自訂元資料的自訂更新

自訂元資料的自訂更新

可排隊類

可排隊類

呼叫 Future 方法並傳送列表以在 Queueable 類別中更新

呼叫Future方法

Emizentech 是一家真正且經驗豐富的銷售人員顧問公司,我們熟練的銷售人員開發人員可以為您的下一個銷售人員專案提供專業協助。

另請閱讀:如何建立 Salesforce Lightning 地圖元件?