Estou tentando criar um aplicativo Java que monitore uma fila no ActiveMQ Classic 5.17 e envie notificações quando determinadas condições forem atendidas. No entanto, estou encontrando um IllegalArgumentException
com a mensagem:
Exception in thread "main" java.lang.IllegalArgumentException: The specified MBean [org.apache.activemq:type=Broker,brokerName=localhost,destinationType=Queue,destinationName= QUEUE_LOG] is not a NotificationBroadcaster object.
Aqui está meu código:
private static final String ACTIVEMQ_BROKER_URL = "service:jmx:rmi:///jndi/rmi://IP:PORT/jmxrmi";
private static final String QUEUE_NAME = "QUEUE_LOG";
private static final int ALERT_THRESHOLD = 100;
private MBeanServerConnection connection;
private final NotificationListener listener = this;
public ActiveMQQueueMonitor() throws Exception {
Map<String, String[]> env = new HashMap<>();
String[] credentials = {"USERNAME", "PASSWORD"};
env.put(JMXConnector.CREDENTIALS, credentials);
JMXServiceURL url = new JMXServiceURL(ACTIVEMQ_BROKER_URL);
JMXConnector connector = JMXConnectorFactory.connect(url, env);
connection = connector.getMBeanServerConnection();
ObjectName queueObjectName = new ObjectName("org.apache.activemq:type=Broker,brokerName=localhost,destinationType=Queue,destinationName=" + QUEUE_NAME);
connection.addNotificationListener(queueObjectName, listener, null, null);
}
@Override
public void handleNotification(Notification notification, Object handback) {
// notification logic
}
Não sei por que estou recebendo esse erro.