Salesforce Platform Events の発行と購読
この記事の英語版に更新があります。ご覧の翻訳には含まれていない変更点があるかもしれません。
最終更新日 2022年04月25日(月)
Table of Contents
Salesforce のエンタープライズメッセージングプラットフォームで、イベント駆動型アプローチを使用してアプリを設計できます。プラットフォームイベントには、Salesforce アプリ内の内部コンポーネントを統合したり、Salesforce アプリ内の内部コンポーネントを Heroku アプリなどの外部システムと統合したりするための強力なテクニックが用意されています。イベントプロデューサーとイベントコンシューマーが分離され、接続されたシステムでの通信モデルが簡略化されるため、このアーキテクチャは大規模な分散システムに向いています。
Heroku アプリケーションは、イベントプロデューサー、イベントコンシューマー、またはこの 2 つのいくつかの組み合わせとして動作できます。
どのような場合に使用するか
Salesforce のエンタープライズメッセージングプラットフォームとの最新鋭の統合を構築したい場合。このメッセージングプラットフォームでは、ポイントツーポイントの統合ではなく、メッセージングバスを使用する、統合の境界がはっきりしたモジュール式の統合を構築できます。
Heroku からのプラットフォームイベントの公開
イベントの公開は、Salesforce REST API を呼び出すことによって実行されます。実際には、Heroku アプリケーションでイベントを表す sObject を作成し、
/services/data/v43.0/sobjects/Event_Name__e/
のようなコードを使用して、適切なエンドポイントに POST します。
Node.js 用の JSforce のような Salesforce API クライアントライブラリを使用して、次のようなコードを作成してイベント (この場合は Flight_Approved
イベント) を公開します。
// Establish an authenticated Salesforce connection. (Details elided)
const conn = new jsforce.Connection({ … });
const eventData = {
Flight_Id__c: id,
Confirmation_Number__c: confirmationNumber
};
conn.sobject('Flight_Approved__e').create(eventData, (err, res) => {
if (err) {
console.error(err);
} else {
console.log("Event published");
}
});
プラットフォームイベントの登録
Heroku アプリでは、CometD プロトコルを使用してイベントを登録できます。 Salesforce は、受信した順番で ComeD クライアントにプラットフォームイベントを送信します。イベント通知の順番は、イベントの replay ID に基づきます。
たとえば、Node.js アプリでは、JSforce モジュールを使用して、replay での登録を構成できます。
// Establish an authenticated Salesforce connection. (Details elided)
const conn = new jsforce.Connection({ … });
const channel = "/event/Flight_Approved__e";
const replayId = -2; // -2 is all retained events
const replayExt = new jsforce.StreamingExtension.Replay(channel, replayId);
const fayeClient = conn.streaming.createClient([ replayExt ]);
const subscription = fayeClient.subscribe(channel, data => {
console.log('Received Flight Approved Event', data);
});
制限と考慮事項
プラットフォームイベントを作成するときの考慮事項 (トリガーの無限ループの回避、API の制限などを含む) が記載されている Salesforce のドキュメントを参照してください。
「セキュリティと Heroku/Salesforce の統合」に、この統合を保護する方法が示されています。
詳細情報
- 「Platform Events Developer Guide (プラットフォームイベント開発者ガイド)」
- 「Salesforce API によるイベントメッセージの公開」
- 「CometD によるプラットフォームイベント通知の登録」
- Node.js および Ruby 用の Faye モジュール