미래 방법 대. Salesforce에서 대기열에 넣을 수 있는 Apex
게시 됨: 2023-11-20빠르게 변화하는 Salesforce 개발 세계에서는 효율적이고 효과적인 코딩을 위한 최고의 도구와 방법을 이해하는 것이 중요합니다. 이 문서에서는 Future Method와 Queueable Apex라는 두 가지 주요 개념을 살펴봅니다. 두 가지 모두 Salesforce에서 비동기 작업을 처리하는 데 사용되는 강력한 기술이지만 서로 다른 기능과 사용 사례가 있습니다.
Future Method와 Queueable Apex의 미묘한 차이를 살펴보고 기능, 장점, Salesforce 프로젝트에서 각 기능을 언제 사용해야 하는지 비교하겠습니다. 숙련된 개발자이든 Salesforce를 처음 사용하는 개발자이든 이 비교는 귀중한 통찰력을 제공하여 코드 최적화를 위한 현명한 결정을 내리는 데 도움이 됩니다.
Salesforce에서 복잡성을 해결하고 Future Method 및 Queueable Apex의 잠재력을 공개하는 동안 계속 지켜봐 주시기 바랍니다!
목차
왜 Future Method인가?
나중에 별도의 스레드에서 프로세스를 실행하고 코드를 비동기적으로 실행하려면 향후 메서드를 사용해야 합니다.
언제 사용되나요?
이는 외부 웹 서비스에 대한 콜아웃이나 자체 스레드에서 실행하려는 작업과 같은 장기 실행 작업에 사용됩니다.
대기열에 넣을 수 있는 Apex를 사용하는 이유는 무엇입니까?
마찬가지로 future는 비동기 코드를 실행하는 데에도 사용되며 대기열에 작업을 추가하고 future 메서드와 비교하여 비동기 코드 실행 방식을 향상시킬 수 있습니다.
언제 사용되나요?
광범위한 데이터베이스 작업 또는 외부 웹 서비스 콜아웃과 같이 오랫동안 실행되는 Apex 프로세스의 경우 Queueable 인터페이스를 구현하여 비동기식으로 실행할 수 있습니다.
추가 읽기: OAuth를 사용하여 Salesforce SSO를 구현하는 방법은 무엇입니까?
Future와 Queueable Apex의 차이점:
미래 방법 | 대기열에 넣을 수 있는 Apex |
---|---|
1. Future는 SObject 또는 객체 유형 작업에 절대로 사용하지 않습니다. 2. 미래 방법을 사용할 때는 진행 중인 작업을 모니터링할 수 없습니다. 3. future 메서드는 future 또는 배치 클래스 내에서 호출할 수 없습니다. 4. future 메서드는 대기열에 추가되지 않습니다. | 1. 대기열 가능 작업에는 멤버 변수가 SObject 또는 사용자 정의 Apex 유형으로 포함될 수 있습니다. 2. 대기열 가능한 작업을 사용하면 예약된 작업처럼 모니터링할 수 있는 AsyncApexJob이 만들어집니다. 3. 큐에 넣을 수 있는 Apex는 future 및 배치 클래스에서 호출할 수 있습니다. 4. 대기열 가능 Apex를 사용하면 대기열 가능 작업이 연결되며 Developer Edition에서는 5개 작업만 가능합니다. |
대기열에 넣을 수 있는 Apex
Queueable 클래스는 미리 정의된 “Queueable” 인터페이스를 구현하여 생성된 클래스입니다. 이 인터페이스를 사용하면 향후 방법과 비교하여 비동기 작업 또는 작업 코드를 실행할 수 있습니다. 이를 통해 대기열에 있는 작업을 모니터링할 수 있습니다(이 대기열은 작업이 비동기적으로 실행될 수 있도록 Queueable 인터페이스에 의해 생성됩니다).
통사론:
public class <대기열 생성 가능 클래스 이름>은 대기열 가능 {을 구현합니다. //이것은 대기열 가능 인터페이스에 포함되어 있고 대기열 가능 클래스에서 이 메서드를 상속하는 데 필요한 유일한 메서드입니다. 공개 무효 실행(QueueableContext 컨텍스트) { //실행해야 할 코드 } }
광범위한 데이터베이스 작업이나 외부 웹 서비스 콜아웃 등 실행 시간이 오래 걸리는 모든 Apex 프로세스는 대기열 가능 인터페이스를 구현하고 Apex 작업 대기열에 작업을 추가하여 비동기식으로 실행할 수 있습니다.
비동기 apex 작업은 자체 스레드의 백그라운드에서 실행되며 기본 Apex 논리의 실행을 지연시키지 않습니다. 대기 중인 각 작업은 시스템 리소스를 사용할 수 있게 되면 실행됩니다. 인터페이스 방법을 사용하면 힙 크기 제한과 같은 일부 조정자 제한이 동기 Apex보다 높다는 이점이 있습니다.
미래 Apex 방법
Future apex는 나중에 시스템 리소스를 사용할 수 있게 되면 별도의 스레드에서 프로세스를 실행하는 데 사용됩니다. future apex를 사용하기 위해 클래스를 생성할 필요가 없습니다. "@future" 주석을 사용하여 비동기적으로 실행되는 메서드를 식별하고 이 주석 아래에 설명된 메서드가 future 메서드임을 나타내기만 하면 됩니다.
동기 처리를 사용하는 경우 모든 메서드 호출은 Apex 코드를 실행하는 동일한 스레드에서 이루어지며 프로세스가 완료될 때까지 추가 처리가 발생할 수 없습니다. 자체 스레드에서 비동기적으로 실행하려는 모든 작업에 대해 향후 메서드를 사용할 수 있습니다. 이는 사용자가 다른 작업을 수행하는 것을 차단하지 않고 프로세스에 대해 더 높은 조정자 및 실행 제한을 제공하는 이점을 제공합니다.
통사론:
글로벌 클래스 <클래스명> { //아래는 주어진 메소드가 future 메소드임을 정의하는 future 어노테이션입니다. @미래 공개 정적 무효 <FutureMethodName>(List<Id> RecordIds) { List<연락처> 계정 = [ID IN:recordIds가 있는 연락처에서 ID, 이름, 성 선택]; // 멋진 일을 하기 위해 연락처 기록을 처리합니다. } }
또한 읽어 보세요: Pipedrive와 Salesforce 통합을 연결하는 방법은 무엇입니까?
미래의 방법은 일반적으로 다음을 위해 사용됩니다.
외부 웹 서비스에 대한 콜아웃. 트리거에서 콜아웃을 수행하거나 DML 작업을 수행한 후에는 future 또는 대기열 가능 메서드를 사용해야 합니다. 트리거의 콜아웃은 콜아웃 수명 동안 데이터베이스 연결을 열어 둡니다.
리소스 집약적인 계산이나 기록 처리 등 시간이 허락할 때 자체 스레드에서 실행하려는 작업
참고: 메서드를 호출하는 시간과 실제로 실행되는 시간 사이에 개체가 변경될 수 있으므로 개체 이유를 future 메서드에 인수로 전달할 수 없습니다. 시스템 리소스를 사용할 수 있게 되면 향후 메서드가 실행됩니다. 향후 메소드가 실행될 때 이전 객체 값이 있을 수 있으며 이로 인해 모든 종류의 나쁜 일이 발생할 수 있습니다.
기억할 사항
- future 메서드는 정적이어야 합니다.
- 반환 유형은 void여야 합니다.
- 지정된 매개변수는 기본 데이터 유형, 기본 데이터 유형의 배열 또는 기본 데이터 유형의 컬렉션이어야 합니다.
- 다른 메소드를 호출하는 것과 동일한 방식으로 향후 메소드를 호출할 수 있습니다. 그러나 future 메서드는 다른 future 메서드를 호출할 수 없습니다.
- Apex 호출당 메서드 호출이 50개 이하입니다.
- startTest, stopTest 블록에서 호출되는 @future 또는 ExecuteBatch와 같은 비동기 호출은 대기 중인 작업 수에 대한 제한에 포함되지 않습니다.
Future 메서드 및 대기열 생성 가능 클래스의 예
여기서는 캐나다 달러로 4개 통화의 가치를 구하고 있습니다. GBP, USD, AUD, CAD의 경우. 그리고 해당 값을 사용자 정의 메타데이터 통화에 저장합니다. 여기서는 HTTPREQUEST의 경우 Future 메서드를 사용했습니다. 그리고 배치를 실행하는 동안 여러 레코드를 동시에 업데이트하기 때문에 한 번에 여러 레코드를 업데이트하는 Queueable Apex를 사용했습니다.
사용자 정의 메타데이터의 사용자 정의 업데이트
대기열에 넣을 수 있는 클래스
Future 메서드를 호출하고 Queueable 클래스에서 업데이트할 목록을 보냅니다.
Emizentech는 정통하고 경험이 풍부한 Salesforce 컨설팅 회사이며 숙련된 Salesforce 개발자가 귀하의 다음 Salesforce 프로젝트에 대한 전문적인 지원을 제공할 수 있습니다.