es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿El callback ‘some_callback’ se ejecuta en su propia subrutina en Golang cuando natsClient.Subscribe (“some_subject”, some_callback) está presente?

Básicamente, lo que dice el tema. Me interesa saber si cada vez que se invoca el método de devolución de llamada, nats-lib para golang asegura que la devolución de llamada se ejecutará en su propia gorutina (estoy 99% seguro de que sí, pero necesito asegurarme porque no puedo encontrar ninguna pieza explícita de documentación en nats que lo declare concluyentemente – si he perdido algo, siéntete libre de copiar y pegar cualquier enlace).

Si la devolución de llamada se ejecuta de hecho en su propia gorutina, también me interesa saber:

a. si se utiliza la misma gorutina cada vez para una suscripción específica

o b. se crea una gorutina efímera para cada activación de la devolución de llamada: en este caso, la gorutina se elimina después de que la devolución de llamada haya hecho su trabajo.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Después de revisar la documentación y el código de nats.io en Go, se puede concluir que cada vez que se invoca el método de devolución de llamada, efectivamente se ejecuta en su propia gorutina separada. Esto se debe a que la librería nats utiliza las capacidades de concurrencia incorporadas del lenguaje Go y el protocolo NATS en sí está diseñado para la entrega de mensajes asincrónica.

    En cuanto a si se utiliza la misma gorutina cada vez para una suscripción específica o si se crea una gorutina efímera para cada disparo de la devolución de llamada, parece depender de la configuración e implementación de la suscripción.

    De forma predeterminada, al crear una suscripción, la biblioteca nats utilizará una única gorutina para manejar todos los mensajes entrantes de esa suscripción. Esto se especifica mediante la opción ‘MaxInflight’ establecida en 1. Sin embargo, si esta opción se establece en un valor más alto, entonces se pueden utilizar varias gorutinas para manejar los mensajes entrantes.

    En cualquier caso, la(s) gorutina(s) responsables de manejar una suscripción particular continuarán existiendo hasta que se cierre la suscripción o se termine la conexión con el servidor NATS. Por lo tanto, en general, se puede decir que se utilizarán las mismas gorutinas para una suscripción específica, pero esto depende de los detalles específicos de la implementación.

Comments are closed.