Tengo dos aplicaciones Spring Boot ejecutándose en un servidor. Ambos utilizan ActiveMQ JMS integrado. Quiero tener una instancia JMS separada para cada aplicación. ¿Cómo podría configurar el puerto para cada uno de ellos? ¿Hay alguna propiedad como spring.activemq.port ? Cuando ejecuto la segunda aplicación, aparece el siguiente error esperado:
Failed to start JMX connector Cannot bind to URL [rmi://localhost:1099/jmxrmi]: javax.naming.NameAlreadyBoundException: jmxrmi [Root exception is java.rmi.AlreadyBoundException: jmxrmi]. Will restart management to re-create JMX connector, trying to remedy this issue.Tengo el mismo problema, dos procesos SpringBoot y quiero enviar mensajes a través de ActiveMQ. Primero lo hice funcionar iniciando otro proceso con ActiveMQ y configurando ambos procesos SpringBoot en sus archivos application.properties con:
spring.activemq.broker-url = tcp://localhost:61616Con esta configuración le dices a Springboot que se conecte a un servicio ActiveMq externo. Esto funciona, pero primero necesito iniciar ActiveMQ y luego mi proceso Springboot. En alguna página que he leído, esta debe ser la forma de usar en entornos de producción.
Otra solución es utilizar la compatibilidad con JMS integrada en uno de los procesos de SpringBoot, de esta manera debe configurar el servicio de intermediario de ActiveMQ que escucha las conexiones en un proceso de SpringBoot. Puede hacer esto agregando un bean Broker:
@Bean public BrokerService broker() throws Exception { final BrokerService broker = new BrokerService(); broker.addConnector("tcp://localhost:61616"); broker.addConnector("vm://localhost"); broker.setPersistent(false); return broker; }Ahora, este proceso SpringBoot con este bean no necesita la configuración previa en application.properties , y este será el primer proceso que se iniciará, para que ActiveMQ escuche otras conexiones de proceso.
El otro proceso de Springboot aún necesita tener la configuración en application.properties para conectarse al ActiveMq creado por el primer proceso.
Espero que te ayude. Saludos.
Puede configurar la URL del intermediario mediante la propiedad spring.activemq.broker-url , por ejemplo, establecerla en spring.activemq.broker-url=tcp://localhost:61616 .
Para obtener una referencia completa de las propiedades disponibles, puede consultar esta referencia .
spring.activemq.broker-url
Incluyendo el puerto de acuerdo con las propiedades de arranque de resorte