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.

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?

Tags:  , , ,

Answer

  1. Avatar for 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:

    TopicControl topicControl = server.getManagementService().createTopic("#nombre-del-tema", "JMS");
    

    Esto creará un tema con el nombre "#nombre-del-tema".

    Para eliminar un tema JMS, puedes utilizar el siguiente código:

    TopicControl topicControl = server.getManagementService().getTopic("#nombre-del-tema");
    topicControl.remove();
    

    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:

    List<notification> notifications = server.getManagementService().getNotifications();
    for (Notification notification : notifications) {
       if (notification.getType().equals(CoreNotificationType.TOPIC_CREATED)) {
               String nombreTema = (String) notification.getProperties().get("nombreTema");
               // Realizar alguna acción con el nombre del tema
           }
    }
    

    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);

Comments are closed.