J'ai créé un TOPIC dans google pubsub et un ABONNEMENT à l'intérieur du TOPIC, avec les paramètres suivants
puis j'ai écrit un in go , en utilisant son Recevoir pour extraire et accuser réception des messages publiés
package main import ( ... ) func main() { ctx := context.Background() client, err := pubsub.NewClient(ctx, config.C.Project) if err != nil { // do things with err } sub := client.Subscription(config.C.PubsubSubscription) err := sub.Receive(ctx, func(ctx context.Context, msg *pubsub.Message) { msg.Ack() }) if err != context.Canceled { logger.Error(fmt.Sprintf("Cancelled: %s", err.Error())) } if err != nil { logger.Error(fmt.Sprintf("Error: %s", err.Error())) } }
Rien fantaisie, ça marche bien, mais après un certain temps (~ après 3 heures d'inactivité), il cesse de recevoir de nouveaux messages publiés, pas d'erreur (s), rien. Est-ce que je manque quelque chose?
4 Réponses :
Quelques modifications vous aideront à mieux analyser le problème: - Vérifier l'erreur de réception - Utilisez un contexte distinct pour recevoir
ctx := context.Background() err := sub.Receive(ctx, func(ctx context.Context, msg *pubsub.Message) { msg.Ack() }) if err != nil { log.Fatal(err) }
fait ça [j'ai mis à jour ma question], il ne montre aucune erreur, j'utilise aussi GRPC_GO_LOG_SEVERITY_LEVEL = info
juste pour qu'il enregistre tout le reste
Votre code fonctionne-t-il avant? J'ai des problèmes avec PubSub depuis aujourd'hui. Les méthodes comme get_topic ()
, create_topic ()
dans la bibliothèque Python PubSub cessent de fonctionner, mais je n'ai aucun problème avec l'envoi et l'extraction de messages. Hier, tout fonctionnait bien mais aujourd'hui non ...
le code fonctionne juste, mais il arrête de tirer ou de recevoir des messages après un certain temps sans générer d'erreur. Mon équipe essaie actuellement la lib python comme alternative, vous mettra à jour
En général, il peut y avoir plusieurs raisons pour lesquelles un abonné peut cesser de recevoir des messages:
subscription / backlog_bytes
. Si votre problème n'entre pas dans l'une de ces catégories, il est préférable de contacter l'assistance Google Cloud avec le nom de votre projet, le nom du sujet et le nom de l'abonnement afin qu'ils puissent limiter le problème à votre code utilisateur , la bibliothèque cliente elle-même ou le service.
Si ma limite de contrôle de flux est atteinte, comment puis-je le savoir? Je soupçonne que certains de mes messages fonctionnent depuis trop longtemps.
Je vivais quelque chose de similaire et j'étais à peu près sûr qu'aucun autre abonné n'avait extrait ces messages.
Essayez ceci: allez au sujet, créez un nouvel abonnement faux (nommez-le comme vous voulez, car vous le supprimerez plus tard). Juste après avoir fait cela, le faux abonnement (que j'utilisais le exemple de client de code python auquel s'abonner) et le vrai recevait à nouveau des messages. Solution étrange, mais peut-être que cela a réveillé le sujet.
J'espère que quelqu'un de Google pourra nous donner un aperçu de ce qui se passe ici, mais je ne le paie certainement pas assez pour obtenir une assistance directe.