# #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{}
, так что все должно быть в порядке