use of com.netflix.metacat.common.dto.notifications.sns.messages.AddPartitionMessage in project metacat by Netflix.
the class SNSNotificationServiceImpl method notifyOfPartitionAddition.
/**
* {@inheritDoc}
*/
@Override
@EventListener
public void notifyOfPartitionAddition(@NonNull final MetacatSaveTablePartitionPostEvent event) {
log.debug("Received SaveTablePartitionPostEvent {}", event);
final String name = event.getName().toString();
final long timestamp = event.getRequestContext().getTimestamp();
final String requestId = event.getRequestContext().getId();
AddPartitionMessage message = null;
try {
for (final PartitionDto partition : event.getPartitions()) {
message = new AddPartitionMessage(UUID.randomUUID().toString(), timestamp, requestId, name, partition);
this.publishNotification(this.partitionTopicArn, message);
log.debug("Published create partition message {} on {}", message, this.partitionTopicArn);
this.registry.counter(this.registry.createId(Metrics.CounterSNSNotificationPartitionAdd.name()).withTags(Metrics.statusSuccessMap)).increment();
}
} catch (final Exception e) {
this.handleException(event.getName(), "Unable to publish partition creation notification", Metrics.CounterSNSNotificationPartitionAdd.name(), message, e);
}
UpdateTablePartitionsMessage tableMessage = null;
try {
// Publish a global message stating how many partitions were updated for the table to the table topic
tableMessage = new UpdateTablePartitionsMessage(UUID.randomUUID().toString(), timestamp, requestId, name, new TablePartitionsUpdatePayload(event.getPartitions().size(), 0));
this.publishNotification(this.tableTopicArn, tableMessage);
this.registry.counter(this.registry.createId(Metrics.CounterSNSNotificationTablePartitionAdd.name()).withTags(Metrics.statusSuccessMap)).increment();
} catch (final Exception e) {
this.handleException(event.getName(), "Unable to publish table partition add notification", Metrics.CounterSNSNotificationTablePartitionAdd.name(), tableMessage, e);
}
}
Aggregations