Streaming API в Salesforce

Streaming API у Salesforce — це інструмент, що дозволяє клієнтським додаткам отримувати оновлення даних у реальному часі. Він усуває потребу в періодичному опитуванні серверів, забезпечуючи ефективну роботу системи і підвищуючи продуктивність інтеграцій. У цій статті ми розглянемо, як працює Streaming API, його сучасні компоненти, сфери використання, а також основні етапи впровадження.


Що таке Streaming API?

Streaming API дозволяє клієнтам підписуватись на події Salesforce і отримувати повідомлення про зміни в системі. Основні компоненти Streaming API:

  • Сервер Salesforce публікує події.
  • Клієнтський додаток підписується на ці події через постійне з’єднання.
  • CometD реалізує протокол Bayeux, забезпечуючи обмін повідомленнями у реальному часі.
  • Long Polling підтримує активне з’єднання між клієнтом і сервером.

Історія: Від PushTopic до сучасних рішень

Раніше основним механізмом Streaming API був PushTopic Events, що дозволяв підписуватись на зміни через SOQL-запити. Однак із часом він втратив актуальність через обмежену функціональність:

  • Неможливість відстеження видалення чи відновлення записів.
  • Обмежена масштабованість.
  • Вузька інтеграція з бізнес-процесами.

Сучасні інструменти — Change Data Capture (CDC) та Platform Events — стали гідною заміною:

  • CDC ідеально підходить для автоматичного відстеження змін у даних.
  • Platform Events дозволяє створювати події з кастомною логікою для інтеграцій.

Як працює Streaming API?

Streaming API використовує модель публікації-підписки, що складається з таких етапів:

  1. Handshake (Початкове підключення):
  • Клієнт ініціалізує з’єднання із сервером Salesforce через CometD.
  • Salesforce підтверджує встановлення з’єднання.
  1. Підписка на Канал:
  • Клієнт підписується на певний канал:
    • Для CDC це
/data/<ObjectName>ChangeEvent

.
* Для Platform Events —

/event/<PlatformEventName>__e

.

  1. Отримання Подій:
  • Salesforce надсилає повідомлення клієнту при зміні даних або створенні події.
  1. Автоматичне Відновлення Підключення:
  • У разі збою клієнт автоматично повторно підключається до сервера.

Коли використовувати Change Data Capture або Platform Events?

Change Data Capture (CDC):

CDC найкраще підходить для сценаріїв, де необхідно автоматично відстежувати всі зміни в об’єктах Salesforce, включаючи створення, оновлення, видалення чи відновлення записів.

Use cases CDC:

  • Синхронізація даних: Наприклад, синхронізація записів Salesforce із зовнішньою базою даних.
  • Моніторинг змін: Відстеження змін у статусах замовлень чи записів клієнтів.
  • Міграція даних: Реагування на зміни в даних у реальному часі для автоматизації міграції.

Platform Events:

Platform Events використовуються для створення подій із кастомною логікою, які не прив’язані до конкретного об’єкта Salesforce.

Use cases Platform Events:

  • Складні інтеграції: Наприклад, обмін даними між Salesforce і зовнішніми ERP-системами.
  • Автоматизація процесів: Генерація подій для запуску кастомних робочих процесів.
  • Оркестрація мікросервісів: Координація роботи кількох систем через події.

Реалізація Streaming API для Розробників

Налаштування Change Data Capture (CDC)

Щоб активувати CDC:

  1. Перейдіть до Setup → Change Data Capture.
  2. У списку доступних об’єктів виберіть ті, зміни яких потрібно відстежувати (наприклад, Account, Contact).
  3. Збережіть налаштування.

Після активації CDC для об’єкта створюється канал /data/ChangeEvent, який використовується для підписки.

Налаштування Platform Events

Щоб створити Platform Event:

  1. Перейдіть до Setup → Platform Events.
  2. Натисніть New Platform Event.
  3. Вкажіть назву події (наприклад, OrderProcessed) і необхідні поля.
  4. Збережіть налаштування.

Після створення події для неї автоматично генерується канал /event/PlatformEventName__e.

Код клієнтської інтеграції

Підключення до CDC (Node.js):

const cometdLib = require('cometd');

const cometd = new cometdLib.CometD();

const salesforceUrl = 'https://<your_instance>.salesforce.com/cometd/54.0';

const accessToken = '<your_access_token>';

cometd.configure({

url: salesforceUrl,

requestHeaders: {

Authorization: `Bearer ${accessToken}`

}

});

cometd.handshake((handshakeReply) => {

if (handshakeReply.successful) {

console.log('Handshake успішний!');

cometd.subscribe('/data/AccountChangeEvent', (message) => {

console.log('Отримано подію:', JSON.stringify(message));

});

} else {

console.error('Помилка handshake:', handshakeReply);

}

});

Публікація Platform Event через Apex:

MyCustomEvent__e event = new MyCustomEvent__e();

event.CustomField__c = 'Test Data';

EventBus.publish(event);

System.debug('Подія опублікована: ' + event);

Найкращі Практики для Використання Streaming API

  1. Ефективне управління підписками:
  • Уникайте надлишкових підписок.
  • Регулярно перевіряйте і видаляйте непотрібні канали.
  1. Масштабованість:
  • Для великих обсягів подій інтегруйте зовнішні системи обробки, такі як Kafka або AWS SQS.
  1. Безпека:
  • Використовуйте OAuth для авторизації.
  • Обмежуйте доступ до каналів через Permission Sets.
  1. Обробка помилок:
  • Реалізуйте повторне підключення клієнта при збоях.
  • Логування допоможе швидко ідентифікувати проблеми.

Висновок

Streaming API відкриває нові можливості для інтеграцій у реальному часі. Якщо раніше PushTopic Events був основним інструментом роботи з подіями, сьогодні Change Data Capture і Platform Events забезпечують більшу гнучкість, масштабованість та простоту у використанні.

  • CDC ідеально підходить для автоматичного відстеження змін у даних.
  • Platform Events дозволяє створювати кастомні події для складних інтеграцій.

Дотримання найкращих практик, таких як правильне управління підписками, масштабованість і безпека, забезпечить стабільну та ефективну роботу з API навіть у складних сценаріях. Streaming API є ключовим інструментом для побудови сучасних, інтегрованих рішень на платформі Salesforce.

3 Вподобання