IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Plateformes (Java EE, Jakarta EE, Spring) et Serveurs Discussion :

Active MQ Purge Queue not working - credential


Sujet :

Plateformes (Java EE, Jakarta EE, Spring) et Serveurs

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2012
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Active MQ Purge Queue not working - credential
    Bonjour à tous,

    J'utilise Active MQ 5.5.1 et Tomcat 7 et je souhaiterais purger une queue (persistante) depuis tomcat. J'utilise un credential afin de sécuriser la connection à ActiveMQ

    Voici le code que j'utilise mais qui ne fonctionne pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    	private static MBeanServerConnection connect() {
    		JMXConnector connector = null;
    		MBeanServerConnection connection = null;
     
    		try {
     
    			Map<String,String[]> env = new HashMap<String,String[]>();
    			String[] credentials = new String[] { "mon_role", "mon_mdp" };
    			env.put(JMXConnector.CREDENTIALS, credentials);
    			connector = JMXConnectorFactory.newJMXConnector(new JMXServiceURL(Configuration.getProperty("activemq.jmxrmiURL")), env);
    			connector.connect();
    			connection = connector.getMBeanServerConnection();
     
    		} catch (Exception e) {
    			logger.log(Level.INFO, e.getMessage());
    		}
    		return connection;
    	}
     
     
    	private static void purgeQueue(String queueName) {
    		ObjectName brokerObjName;
    		try {
    			MBeanServerConnection connection = connect();
    			long start = System.currentTimeMillis();
    			brokerObjName = assertRegisteredObjectName("org.apache.activemq:Type=Queue,Destination=" + queueName + ",BrokerName=localhost", connection);
    			QueueViewMBean proxy = (QueueViewMBean)MBeanServerInvocationHandler.newProxyInstance(connection, brokerObjName, QueueViewMBean.class, true);
    			logger.log(Level.INFO, "[Queue Purge] Begin Queue " + queueName + " of " + proxy.getQueueSize() + " items purge ... / Memory : " + proxy.getMemoryPercentUsage());
    			proxy.purge();
    			logger.log(Level.INFO, "[Queue Purge] Queue " + queueName + " after : " + proxy.getQueueSize() + " / purge end in " +  (System.currentTimeMillis() - start) + " ms ! Now memory : " + proxy.getMemoryPercentUsage());
    		} catch (Exception e) {
    			logger.log(Level.INFO, e.getMessage());
    		}
    	}
     
     
    	private static ObjectName assertRegisteredObjectName(String name, MBeanServerConnection connection) throws MalformedObjectNameException, NullPointerException, IOException {
            ObjectName objectName = new ObjectName(name);
            if (!connection.isRegistered(objectName)) {
            	logger.log(Level.INFO, "[JMX Bean Registration] Could not find MBean " + objectName + " - Purge cannot work !");
            }
            return objectName;
    	}
    Pour information, j'arrive bien à me connecter à JMX et à supprimer des topics avec la méthode Connect() puis celle ci dessous, donc je ne pense pas qu'il s'agisse d'un problème de connection à JMX.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    	private static void removeTopic(MBeanServerConnection conn, String topicName) {
    		Object[] params = {topicName};
    		String[] sig = {"java.lang.String"};
     
    		ObjectName brokerObjName;
    		try {
    			brokerObjName = new ObjectName("org.apache.activemq:BrokerName=localhost,Type=Broker");
    			conn.invoke(brokerObjName, "removeTopic", params, sig); 
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}
    Voici la trace que j'ai lors de la tentative de purge de la queue :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
            private static String dashBoardQueueName = "dashboard";
    	public void purgeDashBoardQueue() {
    		purgeQueue(dashBoardQueueName);
    	}
     
    INFO [Queue Purge] Begin Queue dashboard of 0 items purge ... / Memory : 0
    INFO [Queue Purge] Queue dashboard after : 0 / purge end in 2 ms ! Now memory : 0
    Donc j'ai l'impression qu'il se connecte bien au Bean de JMX mais qu'il n'arrive déjà pas à récupérer la bonne taille de ma queue (elle n'est pas vide).

    Avez-vous déjà utilisé cette méthode pour purger une queue ? Si oui, avez-vous une idée de mon problème ?

    Merci à tous !!

    Cdt,

    Guillaume

  2. #2
    Nouveau Candidat au Club
    Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2012
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    En fait je viens de me rendre compte que cette méthode purge marche mais elle supprime les messages qui n'ont pas été dépilés par un consumer.

    Ainsi, existe t'il une méthode pour purger les queues qui ont eu des messages dépilés ? En effet, j'observe une augmentation mémoire dû à l'utilisation d'une queue qui est très solicitée, et je souhaiterais la purger de manière régulière afin de ne plus stocker les messages persistants qui semblent être concervés en mémoire.

    Merci à vous pour vos infos sur le sujet.

    Cdt,

    Guillaume

Discussions similaires

  1. HEADER is not working
    Par billyrose dans le forum Langage
    Réponses: 20
    Dernier message: 22/04/2009, 11h07
  2. NumberField.setValue not work
    Par Glenn_31 dans le forum GWT et Vaadin
    Réponses: 1
    Dernier message: 23/03/2009, 11h00
  3. Réponses: 6
    Dernier message: 01/08/2007, 12h16
  4. CR 11 UFL Java work ou not work?
    Par lyonnaisFR dans le forum SDK
    Réponses: 1
    Dernier message: 29/11/2006, 17h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo