proyecto example ejemplo crear application java spring-boot activemq

java - example - Configuración de ActiveMQ con Spring Boot



spring boot queue example (3)

Uso ActiveMQ como incrustado con Spring Boot. Parece que el Broker se crea a través de ActiveMQConnectionFactory. Entiendo que la forma de configurar el intermediario es establecer parámetros en la consulta con el intermediario. como se describe aquí: http://activemq.apache.org/how-do-i-embed-a-broker-inside-a-connection.html

Me gustaría configurar algunas características sobre el DLQ, por lo que está en el atributo destinationPolicy, pero el tipo de atributo no es un tipo simple, sino un tipo complejo, ¿cómo puedo escribir el parámetro de consulta para deshabilitar DLQ, por favor?


Buena pregunta. Las propiedades de vm-transport para la creación automática de intermediarios son geniales, pero solo hasta un punto que creo que has alcanzado.

Mi sugerencia es que defina la configuración del intermediario como lo haría normalmente en XML y luego simplemente haga referencia a este xml en el URI. Las políticas de destino son de hecho una estructura compleja y no veo cómo sería una buena idea definirlas con parámetros de consulta simples, incluso si fuera posible.

vm://localhost?brokerConfig=xbean:activemq.xml


Tuve este problema y lo resolví utilizando un archivo de configuración de primavera. En mi caso, quería configurar mi broker para que persistiera.

Agregué las libs necesarias en mi pom: incluyendo activemq-broker, activemq-spring, spring-jms (y en mi caso, activemq-leveldb-store).

Mi archivo xml de primavera se veía así:

<beans xmlns="http://www.springframework.org/schema/beans" xmlns:amq="http://activemq.apache.org/schema/core" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd"> <broker xmlns="http://activemq.apache.org/schema/core" brokerName="xyz"> <persistenceAdapter> <levelDB directory="activemq-data"/> </persistenceAdapter> <transportConnectors> <transportConnector uri="vm:localhost?persistent=true" /> </transportConnectors> </broker> </beans>

Y registré el archivo de primavera en una de mis clases de configuración:

@ImportResource("activemq-spring.xml")

Eso hizo el trabajo.

Probé la solución xbeans primero, pero me quedé atascado porque me faltaban algunas clases de xbeans, y no sabía si era una versión de cosa o qué. Estoy usando activemq 5.12.1


Complementando respuestas de @Petter y @April, debajo de las mismas soluciones pero con muestras más completas:

1. Solución Petter, importe activemq.xml en la interfaz de fábrica de la conexión

build.gradle

ext { springBootVersion = "1.5.3.RELEASE" activeMQVersion = "5.14.5" } dependencies { compile("org.springframework.boot:spring-boot-starter-activemq:${springBootVersion}") compile("org.apache.activemq:activemq-broker:${activeMQVersion}") testCompile("org.springframework.boot:spring-boot-starter-test:${springBootVersion}") testCompile group: ''org.apache.activemq'', name: ''activemq-spring'', version: "${activeMQVersion}" testCompile("junit:junit:4.12") }

src / main / resources / activemq.xml

<beans xmlns="http://www.springframework.org/schema/beans" xmlns:amq="http://activemq.apache.org/schema/core" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core-5.4.0.xsd "> <broker xmlns="http://activemq.apache.org/schema/core" brokerName="broker1" persistent="false" > <transportConnectors> <transportConnector name="vm" uri="vm://broker1"/> </transportConnectors> </broker> </beans>

Config.java

@EnableJms @SpringBootApplication @EnableAutoConfiguration @Configuration public class Config {}

application.properties

spring.activemq.broker-url=vm://broker1?brokerConfig=xbean:activemq.xml

2. Solución de abril, importar activemq.xml en Spring Configuration

Simplemente elimine application.properties luego agregue la entrada @ImportResource("classpath:activemq.xml") a Config.java

Config.java

@EnableJms @SpringBootApplication @EnableAutoConfiguration @Configuration @ImportResource("classpath:activemq.xml") public class Config {}