Zukunftsmethode vs. Queueable Apex in Salesforce

Veröffentlicht: 2023-11-20

In der schnelllebigen Welt der Salesforce-Entwicklung ist es entscheidend, die besten Tools und Methoden für eine effiziente und effektive Codierung zu verstehen. Dieser Artikel befasst sich mit zwei Schlüsselkonzepten: Future Method und Queueable Apex. Bei beiden handelt es sich um leistungsstarke Techniken, die in Salesforce zur Abwicklung asynchroner Vorgänge verwendet werden, sie verfügen jedoch über unterschiedliche Funktionen und Anwendungsfälle.

Wir erkunden die Nuancen von Future Method und Queueable Apex und vergleichen deren Funktionalitäten, Vorteile und den Einsatzzeitpunkt in Ihren Salesforce-Projekten. Unabhängig davon, ob Sie ein erfahrener Entwickler oder ein Salesforce-Neuling sind, liefert dieser Vergleich wertvolle Erkenntnisse und hilft Ihnen, fundierte Entscheidungen zur Optimierung Ihres Codes zu treffen.

Bleiben Sie auf dem Laufenden, während wir die Komplexität entschlüsseln und das Potenzial von Future Method und Queueable Apex in Salesforce enthüllen!

Inhaltsverzeichnis

Warum Zukunftsmethode?

Wenn Sie Prozesse zu einem späteren Zeitpunkt in einem separaten Thread ausführen und den Code asynchron ausführen möchten, müssen wir zukünftige Methoden verwenden.

Wann wird es verwendet?

Diese werden für Vorgänge mit langer Laufzeit verwendet, z. B. Aufrufe an externe Webdienste oder Vorgänge, die Sie in einem eigenen Thread ausführen möchten

Warum Queueable Apex?

Like the Future wird auch zum Ausführen des asynchronen Codes verwendet und ermöglicht es Ihnen, Jobs in eine Warteschlange hinzuzufügen und die Art und Weise der Ausführung von asynchronem Code im Vergleich zur Future-Methode zu verbessern.

Wann wird es verwendet?

Apex-Prozesse, die über einen längeren Zeitraum ausgeführt werden, wie beispielsweise umfangreiche Datenbankvorgänge oder externe Webdienstaufrufe, können Sie durch die Implementierung der Queueable-Schnittstelle asynchron ausführen

Lesen Sie auch: Wie implementiert man Salesforce SSO mit OAuth?

Unterschiede zwischen Future und Queueable Apex:

Zukunftsmethode Warteschlangenfähiger Apex
1. Future wird niemals für die Arbeit an SObjects oder Objekttypen verwendet.

2. Bei Verwendung der Zukunftsmethode können wir die in Bearbeitung befindlichen Jobs nicht überwachen.

3. Die Future-Methode kann nicht innerhalb der Future- oder Batch-Klasse aufgerufen werden.

4. Die zukünftige Methode wird niemals in die Warteschlange gestellt.

1. Warteschlangenfähige Jobs können die Mitgliedsvariablen als SObjects oder benutzerdefinierte Apex-Typen enthalten.

2. Bei der Verwendung von warteschlangenfähigen Jobs wird der AsyncApexJob erstellt, den wir wie geplante Jobs überwachen können.

3. Queueable Apex kann aus der Future- und Batch-Klasse aufgerufen werden.

4. Durch die Verwendung von Queueable Apex werden Aufträge in die Warteschlange gestellt, und in der Developer Edition sind es nur 5 Aufträge.

Warteschlangenfähiger Apex

Die Queueable-Klasse ist eine Klasse, die durch Implementierung der vordefinierten Schnittstelle „Queueable“ erstellt wird. Diese Schnittstelle ermöglicht die Ausführung Ihrer asynchronen Jobs oder Ihres Jobcodes im Vergleich zur zukünftigen Methode. Damit können Sie die Jobs überwachen, die sich in der Warteschlange befinden (diese Warteschlange wird von der Queueable-Schnittstelle erstellt, sodass die Jobs asynchron ausgeführt werden können).

Syntax:

 Die öffentliche Klasse <Name der Queueable-Klasse> implementiert Queueable {
//Dies ist die einzige Methode, die in der Queueable-Schnittstelle enthalten ist und zum Erben dieser Methode in der Queueable-Klasse erforderlich ist.
public voidexecute (QueueableContext context) {
//Code, der ausgeführt werden muss
}
}

Alle Apex-Prozesse, deren Ausführung lange dauert, wie etwa umfangreiche Datenbankvorgänge oder externe Webdienstaufrufe, können Sie asynchron ausführen, indem Sie die Queueable-Schnittstelle implementieren und einen Job zur Apex-Jobwarteschlange hinzufügen.

Ihr asynchroner Apex-Job wird im Hintergrund in einem eigenen Thread ausgeführt und verzögert nicht die Ausführung Ihrer Haupt-Apex-Logik. Jeder Job in der Warteschlange wird ausgeführt, sobald Systemressourcen verfügbar werden. Ein Vorteil der Verwendung der Schnittstellenmethoden besteht darin, dass einige Governor-Grenzwerte höher sind als für synchrones Apex, z. B. Heap-Größenbeschränkungen.

Future Apex-Methode

Future Apex wird verwendet, um Prozesse später in einem separaten Thread auszuführen, wenn Systemressourcen verfügbar werden. Für die Verwendung von Future Apex müssen wir keine Klasse erstellen, sondern lediglich die Annotation „@future“ verwenden, um Methoden zu identifizieren, die asynchron ausgeführt werden, und um anzugeben, dass die unter dieser Annotation beschriebene Methode eine zukünftige Methode ist.

Bei Verwendung der synchronen Verarbeitung erfolgen alle Methodenaufrufe von demselben Thread, der den Apex-Code ausführt, und es kann keine weitere Verarbeitung erfolgen, bis der Prozess abgeschlossen ist. Sie können zukünftige Methoden für jeden Vorgang verwenden, den Sie asynchron in einem eigenen Thread ausführen möchten. Dies bietet den Vorteil, dass der Benutzer nicht daran gehindert wird, andere Vorgänge auszuführen, und höhere Steuerungs- und Ausführungsgrenzen für den Prozess bereitgestellt werden.
Syntax:

 globale Klasse <Klassenname> {
// Unten finden Sie eine zukünftige Annotation, die definiert, dass die angegebene Methode eine zukünftige Methode ist.
@Zukunft
public static void <FutureMethodName>(List<Id> recordIds) {
List<Contact>accounts = [Wählen Sie ID, Vorname und Nachname aus Kontakt aus, wobei die ID IN :recordIds ist];
// Kontaktdatensätze verarbeiten, um großartige Dinge zu tun
}
}

Lesen Sie auch: Wie verbindet man Pipedrive und Salesforce-Integration?

Zukünftige Methoden werden typischerweise für verwendet

Callouts zu externen Webdiensten. Wenn Sie Callouts von einem Trigger aus oder nach der Ausführung einer DML-Operation durchführen, müssen Sie eine zukünftige oder warteschlangenfähige Methode verwenden. Ein Callout in einem Trigger würde die Datenbankverbindung für die Lebensdauer des Callouts offen halten.

Vorgänge, die Sie in einem eigenen Thread ausführen möchten, wenn es die Zeit erlaubt, z. B. eine ressourcenintensive Berechnung oder Verarbeitung von Datensätzen

Hinweis: Der Grund von Objekten kann nicht als Argumente an die zukünftige Methode übergeben werden, da sich das Objekt zwischen dem Aufruf der Methode und dem Zeitpunkt ihrer tatsächlichen Ausführung ändern kann. Zukünftige Methoden werden ausgeführt, wenn Systemressourcen verfügbar werden. Wenn eine zukünftige Methode ausgeführt wird, hat sie möglicherweise einen alten Objektwert, was dazu führen kann, dass alle möglichen schlimmen Dinge passieren.

Dinge, an die man sich erinnern sollte

  • Die zukünftige Methode muss statisch sein
  • Der Rückgabetyp muss void sein
  • Die angegebenen Parameter müssen primitive Datentypen, Arrays primitiver Datentypen oder Sammlungen primitiver Datentypen sein
  • Sie können zukünftige Methoden auf die gleiche Weise aufrufen wie jede andere Methode. Eine zukünftige Methode kann jedoch keine andere zukünftige Methode aufrufen
  • Nicht mehr als 50 Methodenaufrufe pro Apex-Aufruf
  • Asynchrone Aufrufe wie „@future“ oder „executeBatch“, die in einem startTest- oder stopTest-Block aufgerufen werden, werden nicht auf Ihre Grenzwerte für die Anzahl der in der Warteschlange befindlichen Jobs angerechnet
Stellen Sie Salesforce-Entwickler ein

Beispiel für eine Future-Methode und eine Queueable-Klasse

Future-Methode und Queueable-Klasse

Hier erhalte ich den Wert von 4 Währungen im kanadischen Dollar. Für GBP, USD, AUD, CAD. Und Speichern des Werts in einer benutzerdefinierten Metadatenwährung. Für HTTPREQUEST habe ich hier die Future-Methode verwendet. Und weil mehrere Datensätze gleichzeitig aktualisiert werden, während der Batch ausgeführt wird, habe ich Queueable Apex verwendet, das mehrere Datensätze gleichzeitig aktualisiert.

Benutzerdefinierte Aktualisierung benutzerdefinierter Metadaten

Benutzerdefinierte Aktualisierung benutzerdefinierter Metadaten

Queueable-Klasse

Queueable-Klasse

Rufen Sie die Future-Methode auf und senden Sie die Liste zur Aktualisierung in die Queueable-Klasse

Aufruf der Future-Methode

Emizentech ist ein authentisches und erfahrenes Salesforce-Beratungsunternehmen und unsere erfahrenen Salesforce-Entwickler können Ihnen professionelle Unterstützung bei Ihrem nächsten Salesforce-Projekt bieten.

Lesen Sie auch: Wie erstelle ich eine Salesforce Lightning-Kartenkomponente?