DevGang
Авторизоваться

Обрабатываются события только один раз (pub/sub) с использованием Nitric в GO

Шаблон Idempotent Consumer необходим для обработки повторяющихся сообщений в микросервисах, гарантируя, что повторная обработка одного и того же сообщения приводит к тому же результату, что и однократная обработка.

Этого можно достичь путем отслеживания ID сообщений либо в отдельной таблице PROCESSED_MESSAGE, либо внутри бизнес-объектов, на которые влияют сообщения. Записывая ID обработанных сообщений, обработчик сообщений может идентифицировать и удалять дубликаты, обеспечивая идемпотентную обработку и согласованность данных во всех микросервисах.

В этом коротком руководстве мы приведем пример простого фрагмента, который использует метод Subscribe для обработки сообщений из темы с именем "updates".

Наша цель - гарантировать, что событие обрабатывается только один раз, используя встроенную функцию, предоставляемую Nitric SDK для проверки на наличие дубликатов.

Предварительные условия:

Перейдите к установке на вашем компьютере Nitric SDK для Go.

import (
  "fmt"
  "github.com/nitrictech/go-sdk/nitric"
  "github.com/nitrictech/go-sdk/nitric/faas"
)

func main() {
  updates := nitric.NewTopic("updates")

  updates.Subscribe(func(ctx *faas.EventContext, next faas.EventHandler) (*faas.EventContext, error) {
    if isDuplicate(ctx.Request) {
      return ctx, nil
    }
    // TODO: Not a duplicate, process the event
  })

  if err := nitric.Run(); err != nil {
    fmt.Println(err)
  }
}

Вызывая isDuulate вместе с входящим запросом, он проверяет наличие дубликатов сообщений, отбрасывая их для поддержания идемпотентности и соответствующим образом обрабатывая новые или уникальные сообщения.

Источник:

#Golang
Комментарии
Чтобы оставить комментарий, необходимо авторизоваться