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 método del escucha de conejo no se está invocando con el mensaje entrante.

Tengo un método para consumir mensajes en una línea similar como se muestra a continuación:

@RabbitListener(queues = "${com.rabbimq.myQueue}")
public void receive(String msg, Channel channel, @Header(AmqpHeaders.DELIVERY_TAG) long tag)
        throws IOException {
    log.info("Received msg: {}",msg);
    channel.basicAck(tag, false);
}

Esto funciona bien cuando lo ejecuto como un proyecto de SpringBoot. Pero cuando construyo este proyecto y lo coloco como una dependencia en mi otro proyecto, ya no consume el mensaje. Quiero que este sea un proyecto genérico que pueda ser aprovechado por mis otros proyectos. He puesto algunos registradores en este proyecto de “consumo de mensajes” y puedo ver que todos los beans se están creando. Pero no está invocando este método en particular. Cualquier pista aquí es realmente apreciada.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Según la información proporcionada, parece que el problema está en la configuración de la conexión de RabbitMQ y la configuración de la cola en el nuevo proyecto, donde se está utilizando el proyecto de consumo de mensajes como dependencia. Aquí hay algunas cosas que verificar:

    1. Asegúrese de que la anotación @EnableRabbit esté agregada a la clase de configuración en el nuevo proyecto. Esto habilita el soporte para las anotaciones de RabbitMQ, incluida la anotación @RabbitListener utilizada en el proyecto de consumo de mensajes.
    2. Verifique que la configuración de la conexión y la cola de RabbitMQ estén configuradas correctamente en el nuevo proyecto. Esto puede implicar verificar el nombre de la cola y los detalles de la conexión, y asegurarse de que la cola esté configurada para utilizar el intercambio correcto y la clave de enrutamiento correcta.

    3. Verifique que el formato del mensaje que se envía a la cola sea compatible con el formato del mensaje que se recibe en el método receive del proyecto de consumo de mensajes. Puede haber problemas con la serialización JSON u otros problemas de formato de carga útil que estén causando que el mensaje no sea reconocido por el @RabbitListener.

    4. Asegúrese de que las dependencias requeridas para el proyecto de consumo de mensajes estén incluidas en el archivo de compilación o en el sistema de gestión de dependencias del nuevo proyecto. Esto puede incluir bibliotecas de cliente de RabbitMQ u otras dependencias necesarias para la serialización o el análisis de mensajes.

    Al verificar estas áreas, debería poder identificar el problema y hacer que el proyecto de consumo de mensajes funcione como un componente genérico en sus otros proyectos.

Comments are closed.