firebase-admin-sdk- перейти к безопасности потоков обмена сообщениями FCM

# #firebase #go #firebase-cloud-messaging #firebase-admin

#firebase #Вперед #firebase-облако-обмен сообщениями #firebase-admin

Вопрос:

Я пытался определить, является ли часть обмена сообщениями FCM firebase-admin-sdk для Go потокобезопасной. Я использую v4 sdk.

     firebase "firebase.google.com/go/v4"
    "firebase.google.com/go/v4/messaging"
  

Я обнаружил, что некоторые другие люди сообщают, что аутентификационная часть SDK является потокобезопасной. Исходя из этого, я бы предположил, что это означает, что обмен сообщениями также возможен, но я надеюсь получить некоторое подтверждение, поскольку я не вижу, чтобы оно вызывалось в документации.

Мой вариант использования заключается в том, что я, по сути, создаю один экземпляр клиента обмена сообщениями FCM в службе api. Может быть любое количество параллельных применений этого клиента, вызывающего fcmClient.Send() метод одновременно после его инициализации.

Спасибо!

Ответ №1:

Да, безопасно вызываться из нескольких параллельных подпрограмм. Единственным общим ресурсом является базовый http.Client экземпляр, который является потокобезопасным: https://golang.org/src/net/http/client.go

Я предполагаю, что каждая из ваших подпрограмм создает свою собственную messaging.Message структуру. Если несколько подпрограмм совместно используют и изменяют одно и то же Message , вы, вероятно, столкнетесь с такими проблемами, как проблема с потерянным обновлением.

Комментарии:

1. Спасибо за информацию, я создаю каждое сообщение, используя буквальный подход amp;messaging.MulticastMessage{} , так что все должно быть в порядке