簡體   English   中英

如何訂閱 AWS Lambda 到 Salesforce 平台事件

[英]How to subscribe AWS Lambda to Salesforce Platform Events

我們希望將 Salesforce 集成到 AWS 中的微服務結構中。 這里有一篇關於這個的文章

所以我們想訂閱 lambda 到 salesforce 中的某些平台事件。但是我沒有找到這方面的代碼示例。 我嘗試使用 node.js(沒有 lambda)。 這很好用:

var jsforce = require('jsforce');
var username = 'xxxxxxxx';
var password = 'xxxxxxxxxxx';
var conn = new jsforce.Connection({loginUrl : 'https://test.salesforce.com'});
conn.login(username, password, function(err, userInfo) {

  if (err) { return console.error(err); }
    console.error('Connected '+userInfo);
  conn.streaming.topic("/event/Contact_Change__e").subscribe(function(message) {
    console.dir(message);
  });
}); 

但我不確定這是否是在 lambda 中執行此操作的正確方法。

我對 Salesforce 平台事件的理解是它們在底層使用CometD CometD 允許 HTTP 客戶端(您的代碼)訂閱 HTTP 服務器發布的事件。

這意味着您的客戶端代碼需要在 state 中運行並在您期望接收事件的持續時間內訂閱並偵聽服務器事件。 在大多數情況下,這個持續時間是不確定的,即您的客戶端代碼期望在訂閱的 state 中永遠等待,准備接收事件。

這與 AWS Lambda 函數不一致,這些函數預計會在相對較短的時間內完成執行(我上次檢查時最多 15 分鍾)。

我建議您需要一個長時間運行的進程,例如在 Elastic Beanstalk 或容器中運行的 nodejs 應用程序。 nodejs 應用程序可以在訂閱的 state 中無限期地保持運行。每次收到事件時,它可以調用您的 AWS Lambda function 以實施所需的操作。

暫無
暫無

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

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