HermesEventPublisherOOB - 범위 지정
HermesEventPublisherOOB 스크립트 포함은 에 메시지를 Hermes 메시징 서비스게시하는 메서드를 제공합니다.
이 스크립트 포함의 기본 기능을 변경하려면 HermesEventPublisher 스크립트 포함에서 이 스크립트 포함에 포함된 메서드를 재지정해야 합니다. 이 스크립트 포함의 메서드 재정의에 대한 자세한 내용은 을 참조하십시오 를 사용하도록 생산자 이벤트 알림 프레임워크를 구성합니다. Hermes 메시징 서비스.
이 스크립트 포함은 sn_api_notif_mgmt 네임스페이스에서 실행됩니다.
HermesEventPublisherOOB - fetchMessageHeaders(message 객체)
전달된 메시지와 연결된 메시지 헤더를 반환합니다.
를 Hermes 메시징 서비스통해 메시지를 게시하기 전에 이 메서드를 호출해야 합니다.
이 메서드의 기본 구현은 원본 헤더 값만 TMT_SERVICENOW로 설정합니다. 비즈니스 요구사항에 따라 이 메서드에서 다른 헤더 속성을 다시 전달해야 하는 경우 HermesEventPublisher 스크립트 포함에서 이 메서드를 재정의하고 추가 헤더 속성을 제공해야 합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 메시지 | 객체 | Hermes Kafka 메시지 브로커에 게시할 TMF 이벤트입니다. 이 메시지의 형식에 대한 자세한 내용은 TMF688 Event Management API 사용자 가이드 v4.0.0을 참조하십시오. |
| 유형 | 설명 |
|---|---|
| 객체 | 전달된 메시지에 사용할 Kafka 헤더입니다. 예: |
다음 코드 예제에서는 이 메서드를 호출하는 방법을 보여 줍니다.
publishMessageThroughProducerV2API: function(message) {
if (gs.nil(message)) return;
var comptableTopicSysIds = this.fetchTopicsForMessage(message);
if (gs.nil(comptableTopicSysIds)) return;
for (var i = 0; i < comptableTopicSysIds.length; i++) {
var partitionKey = this.fetchPartionKey(message);
var headers = this.fetchMessageHeaders(message)
try {
var producer = new sn_ih_kafka.ProducerV2();
producer.send(comptableTopicSysIds[i], partitionKey, JSON.stringify(message), false, headers);
} catch (ex) {
this._logger.logErr("Publishing message to Hermes Kafka Failed, error is: " + ex);
}
}
},
HermesEventPublisherOOB - fetchPartionKey(메시지 객체)
전달된 메시지와 연결된 파티션 키를 반환합니다.
를 Hermes 메시징 서비스통해 메시지를 게시하기 전에 이 메서드를 호출해야 합니다.
이 메서드의 기본 구현은 자동으로 생성된 고유 ID를 파티션 키로 반환합니다. 이러한 유형의 구현은 메시지가 토픽의 모든 파티션에 균등하게 게시되도록 합니다. 파티션 처리를 수정하려면 HermesEventPublisher 스크립트 포함에서 이 메서드를 재정의해야 합니다. 또 다른 가능한 구현은 메시지 이벤트 유형 또는 기타 특성에 따라 고유한 파티션 키를 반환하여 동일한 이벤트 유형 또는 특성의 메시지 시퀀싱을 보장하는 것입니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 메시지 | 객체 | Hermes Kafka 메시지 브로커를 사용하여 게시할 메시지입니다. 이 메시지의 형식에 대한 자세한 내용은 TMF688 Event Management API 사용자 가이드 v4.0.0을 참조하십시오. |
| 유형 | 설명 |
|---|---|
| 문자열 | 전달된 메시지에 사용할 Kafka 파티션 키입니다. 예: 6B29FC40-CA47-1067-B31D-00DD010662DA |
다음 코드 예제에서는 이 메서드를 호출하는 방법을 보여 줍니다.
publishMessageThroughProducerV2API: function(message) {
if (gs.nil(message)) return;
var comptableTopicSysIds = this.fetchTopicsForMessage(message);
if (gs.nil(comptableTopicSysIds)) return;
for (var i = 0; i < comptableTopicSysIds.length; i++) {
var partitionKey = this.fetchPartionKey(message);
var headers = this.fetchMessageHeaders(message)
try {
var producer = new sn_ih_kafka.ProducerV2();
producer.send(comptableTopicSysIds[i], partitionKey, JSON.stringify(message), false, headers);
} catch (ex) {
this._logger.logErr("Publishing message to Hermes Kafka Failed, error is: " + ex);
}
}
},
다음 코드 예제에서는 지정된 메시지에 사용할 파티션 키를 결정하기 위한 사용자 고유의 논리를 포함하도록 이 메서드를 재정의하는 방법을 보여 줍니다.
// Existing implementation for fetching a partition key which is an auto-generated unique ID.
fetchPartionKey: function(message) {
// Implement it for custom partition key
// Random message key ensures better distribution of messages across partitions.
// Same message key ensures that messages always goes to the same partition. This ensures a strict sequencing
// of messages at the Kafka consumer group level.
return gs.generateGUID();
},
// Implementation where the partition key is determined based on the event type.
fetchPartionKey: function(message) {
var eventType = message.eventType;
var partionKey = fetchPartionKeyForMessage(eventType);
return partionKey;
},
HermesEventPublisherOOB - fetchTopicsForMessage(message 객체)
전달된 메시지와 연결된 모든 Kafka 주제를 반환합니다.
이 메서드는 기본 구현에서 구현되지 않으며 정적 sys_id만 반환합니다. HermesEventPublisher 스크립트 포함에서 이 메서드를 재정의하고 전달된 메시지를 보낼 Kafka 주제를 결정하는 논리를 제공해야 합니다.
이 메서드를 구현하는 방법에 대한 자세한 내용은 를 참조하십시오 를 사용하도록 생산자 이벤트 알림 프레임워크를 구성합니다. Hermes 메시징 서비스.
| 이름 | 유형 | 설명 |
|---|---|---|
| 메시지 | 객체 | Hermes Kafka 메시지 브로커에 게시할 TMF 메시지입니다. 이 메시지의 형식에 대한 자세한 내용은 TMF688 Event Management API 사용자 가이드 v4.0.0을 참조하십시오. |
| 유형 | 설명 |
|---|---|
| 배열 | 메시지를 보내야 하는 Kafka 주제의 sys_ids 목록입니다. Kafka 주제 [cmdb_ci_appl_kafka_topic] 테이블에 있습니다. 예: |
다음 코드 예제에서는 이 메서드를 호출하는 방법을 보여 줍니다.
publishMessageThroughProducerV2API: function(message) {
if (gs.nil(message)) return;
var comptableTopicSysIds = this.fetchTopicsForMessage(message);
if (gs.nil(comptableTopicSysIds)) return;
for (var i = 0; i < comptableTopicSysIds.length; i++) {
var partitionKey = this.fetchPartionKey(message);
var headers = this.fetchMessageHeaders(message)
try {
var producer = new sn_ih_kafka.ProducerV2();
producer.send(comptableTopicSysIds[i], partitionKey, JSON.stringify(message), false, headers);
} catch (ex) {
this._logger.logErr("Publishing message to Hermes Kafka Failed, error is: " + ex);
}
}
},
다음 코드 예제에서는 전달된 각 메시지에 대해 동일한 토픽 레코드 sys_id 반환하도록 이 메서드를 재정의하는 방법을 보여 줍니다.
// Return the same topic for all messages if your
// implementation only supports one kind of topic
fetchTopicsForMessage: function(message) {
// Return the same sys_id for all passed messages which
// implies that all of the messages are published to the same topic.
return ['91564fc087f8351063151f473cbb35f8'];
},
다음 코드 예제에서는 이 메서드를 재정의하여 메시지의 이벤트 형식에 따라 메시지를 보낼 대상을 식별하는 방법을 보여 줍니다.
// Fetch the topic based on the message content.
// This could be based on the message domain type or the message event type.
fetchTopicsForMessage: function(message) {
// Implement to return topic based on a message content
// Implementor may decide a topic based on 'eventType' or any other attribute.
var eventType = message.eventType;
var topicSysIdsArr = this.fetchTopicBasedOnEventType(eventType);
return topicSysIdsArr
},
HermesEventPublisherOOB - publishEventToHermesKafka(객체: tmfEventPayload)
를 사용하여 전달된 TMF688 호환 페이로드를 게시합니다 Hermes 메시징 서비스.
이 메서드는 이벤트를 게시하기 위해 다른 메서드를 호출하는 부모 메서드입니다. ProducerV2 API를 사용하는 대신 사용하는 플로우 디자이너 것과 같이 Kafka 게시 메커니즘을 변경하려는 경우가 아니면 이 메서드를 재정의할 필요가 없습니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| tmfEvent페이로드 | 객체 | TMF688 호환 이벤트 페이로드. 이 이벤트 페이로드의 형식에 대한 설명은 TMF688 Event Management API 사용 설명서를 참조하십시오. |
| 유형 | 설명 |
|---|---|
| 없음 |
다음 코드 예제에서는 이 메서드를 호출하는 방법을 보여 줍니다.
publishMessageToHermesKafka: function(tmfEventPayload) {
new HermesEventPublisher().publishEventToHermesKafka(tmfEventPayload);
},