Cómo crear y administrar los temas de ActiveMQ Artemis
Aquí tienes un ejemplo primitivo de un broker Artemis incorporado que envía y recibe mensajes utilizando el envío y la recepción punto a punto. Este ejemplo es autosuficiente y no requiere ninguna configuración adicional con XML u otro archivo externo.
En este ejemplo se crea una nueva cola básica bajo este broker utilizando estas líneas:
QueueConfiguration coreQueueConfiguration = new QueueConfiguration(QUEUE_NAME);
coreQueueConfiguration.setAddress(QUEUE_NAME)
.setName(QUEUE_NAME)
.setDurable(true)
.setRoutingType(RoutingType.ANYCAST);
configuration.addQueueConfiguration(coreQueueConfiguration);
Configuration
es una clase utilizada por el broker para configurarse a sí mismo.
La clase org.apache.activemq.artemis.api.core.QueueConfiguration
es proporcionada por el proyecto Artemis para crear colas.
Sin embargo, no pude encontrar ningún ejemplo de cómo gestionar temas de JMS de forma programática (sin XML u otros archivos) para crear/eliminar y administrarlos en un broker Artemis incorporado.
Pregunta: ¿Cómo puedo gestionar Artemis topics de forma programática?
davy.ai
A partir de la última versión (2.17.0), la API de Artemis solo proporciona una clase para gestionar colas principales (
QueueConfiguration
). Sin embargo, los temas JMS todavía se pueden crear y gestionar utilizando la API principal.Para crear un tema JMS programáticamente, puedes utilizar el siguiente código:
Esto creará un tema con el nombre
"#nombre-del-tema"
.Para eliminar un tema JMS, puedes utilizar el siguiente código:
Esto eliminará el tema con el nombre
"#nombre-del-tema"
.Para listar todos los temas JMS creados en el agente, puedes utilizar el siguiente código:
Este código recorre todas las notificaciones recibidas por el servicio de gestión e identifica aquellas que corresponden a la creación de temas JMS. El nombre del tema se obtiene de las propiedades de la notificación.
Ten en cuenta que estas operaciones requieren acceso a la API de gestión, la cual está desactivada de forma predeterminada en el agente incrustado. Puedes activarla añadiendo la siguiente línea a la configuración:
java
configuration.setManagementEnabled(true);