Event Sync

GitHubEdit on GitHub

Event Sync publishes collaboration engine events to your system so you can react (auditing, notifications, indexing, etc.).

Event Sync

Use Cases

  • Collaboration change audit/replay
  • Sync changes to search/indexing pipelines
  • External notifications and alerts

Supported events:

  • Collaboration edits: persisted changeset

Enable Event Sync

Add to .env.custom:

.env.custom
EVENT_SYNC=true

Add to values.yaml:

values.yaml
universer:
  config:
    rabbitmq:
      eventSync: true

Consumer Example

See: https://github.com/dream-num/univer-event-sync-example-go

Event Schema

message EventSyncData {
  string eventId = 1;
  string eventType = 2; // type of event, now support changeset
  int32 createdAt = 3;
  oneof event {
    univer.ChangesetAck csAckEvent = 4;
    // more event types in the future.
  }
}

message ChangesetAck {
  univer.Changeset cs = 1;
}

message Changeset {
  string unitID = 1; // unitID of the Univer document
  univer.constants.UniverType type = 2;
  int32 baseRev = 3;
  int32 revision = 4;
  string userID = 5;
  repeated Mutation mutations = 6;
  string memberID = 7;
}

message Mutation {
  string id = 1; // ID of the mutation
  string data = 2; // serialized params
}

How is this guide?