Table des matières
ActiveMQ intégré à Tomcat
1 Activer BrokerService
2. Producteurs et consommateurs
3. Surveillez ActiveMQ intégré
4. Selvelt démarre avec Tomcat
Cette fois, ActiveMQ est utilisé comme point d'entrée pour l'utilisation de la file d'attente de messages. De manière générale, tout s'est bien passé. Le seul problème est qu'il s'appuie trop sur activeMQ et sur jar
Maison Java javaDidacticiel Intégrer ActiveMQ dans Tomcat : trois points de connaissances importants à maîtriser

Intégrer ActiveMQ dans Tomcat : trois points de connaissances importants à maîtriser

Aug 03, 2018 pm 02:34 PM
java

ActiveMQ intégré à Tomcat

Dans certains projets, ouvrir un ActiveMQ séparément est parfois un peu fastidieux pour la mise en œuvre du projet. Nous intégrons donc ActiveMQ dans Tomcat, et ActiveMQ est démarré en même temps que Tomcat. À partir de là, nous devons maîtriser trois points de connaissances importants
  • BrokerService dans ActiveMQ

  • Configuration du servlet à démarrage automatique

  • Utilisez jconsole pour comprendre l'état d'exécution d'ActiveMQ intégré

1 Activer BrokerService

Ajouter une dépendance ActiveMQ dans pom.xml. , N'oubliez pas que activemq-core suffit.

<dependency>
    <groupId>org.apache.activemq</groupId>
    <artifactId>activemq-core</artifactId>
    <version>5.7.0</version>
</dependency>
Copier après la connexion

Lors de l'écriture du code BrokerService, faites attention à trois points principaux

  1. Si les informations de surveillance doivent être affichées dans jconsolebroker.setUseJmx(true)

  2. Définir le nom d'utilisateur et le mot de passe de connexion, comment utiliser le plug-in de vérification

  3. S'il faut persister, paramètres d'emplacement de stockage, configuration de persistance

Vous devez donc démarrer une adresse de connexion tcp://localhost:61616, le nom d'utilisateur est admin, le mot de passe est admin, il doit être conservé, l'adresse de stockage du persistant Le fichier de données est /activemq, et vous devez démarrer le BrokerService surveillé par jconsole Le code est le suivant :

    // author:herbert qq:464884492
    BrokerService broker = new BrokerService();
    broker.setUseJmx(true); // 开启监控
    broker.setPersistent(true); // 持久化
    broker.setBrokerName("Test");
    SimpleAuthenticationPlugin sap = new SimpleAuthenticationPlugin();
    AuthenticationUser au = new AuthenticationUser("admin", "admin","users");
    ArrayList<AuthenticationUser> d = new ArrayList<AuthenticationUser>();
    d.add(au);
    sap.setUsers(d); // 用户验证
    broker.setPlugins(new BrokerPlugin[] { sap });
    String mqDataPath = "/activemq"; // 存储位置 
    broker.getPersistenceAdapter().setDirectory(new File(mqDataPath));
    broker.addConnector("tcp://localhost:61616"); // 连接地址
    broker.start();
Copier après la connexion

2. Producteurs et consommateurs

Dans ActiveMQ, il y a deux méthodes générales de livraison des messages

  • Queue , prend en charge la persistance des messages et les messages non consommés existeront toujours après le redémarrage. S'il y a plusieurs consommateurs, en partant du principe d'extraire un message à la fois, tous les consommateurs partageront les sujets du message

  • dans la file d'attente de la même manière. La persistance des messages n'est pas prise en charge de manière égale, et les messages non consommés. sera Les messages sont perdus après le redémarrage. S'il y a plusieurs consommateurs, chaque consommateur consomme à tour de rôle tous les messages du sujet

Que ce soit écrit par le producteur ou le code du consommateur, il y en a principalement 4 étapes

  1. Établir une connexion, utiliser la méthode failover:(), se déconnecter et se reconnecter automatiquement

  2. Établir Session, obtenir l'envoi ou cible de réceptionDestination, précisez s'il s'agit d'une file d'attente (session.createQueue(queueName)) ou d'un sujet (session.createTopic(topicName))

  3. Obtenez le producteur ou le consommateur via Session

  4. Produire ou consommer des messages

Nous écrivons maintenant un code producteur et une boucle pour générer 10 messages

 // author:herbert qq:464884492
String mqConnUrl = "tcp://localhost:61616";
String connUrl = "failover:(" + mqConnUrl.trim()+ ")?initialReconnectDelay=1000&maxReconnectDelay=30000";
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("admin","admin", connUrl);
javax.jms.Connection connection = connectionFactory.createConnection();
connection.start();
Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);
Destination destination = session.createQueue("system");
MessageProducer messageProducer = session.createProducer(destination);

for (int i = 0; i < 10; i++) {
 javax.jms.TextMessage message = session.createTextMessage("ActiveMQ 发送的消息" + i);
 System.out.println("发送消息:" + "ActiveMQ 发送的消息" + i);
 messageProducer.send(message);
}
Copier après la connexion

Écrire un consommateur pour consommer les 10 messages ci-dessus Message

 // author:herbert qq:464884492
String mqConnUrl = "tcp://localhost:61616";
String connUrl = "failover:(" + mqConnUrl.trim()+ ")?initialReconnectDelay=1000&maxReconnectDelay=30000";
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("admin", "admin", connUrl);
javax.jms.Connection connection = connectionFactory.createConnection();
connection.start();
Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);
Destination destination = session.createQueue("system");
MessageConsumer messageConsumer = session.createConsumer(destination);
messageConsumer.setMessageListener(new MessageListener() {
@Override
public void onMessage(javax.jms.Message message) {
   ActiveMQTextMessage m = (ActiveMQTextMessage) message;
    try {
          System.out.println("接收到:" + m.getText());
         } catch (JMSException e) {
         e.printStackTrace();
        }
     }
});
Copier après la connexion

Effet de l'opération

Intégrer ActiveMQ dans Tomcat : trois points de connaissances importants à maîtriser

On peut voir que les 10 messages générés par notre producteur ont été traités avec succès par le consommateur .

3. Surveillez ActiveMQ intégré

Pour ActiveMQ intégré, vous devez définir broker.setUseJmx(true) avant de démarrer BrokerService ; puis recherchez votre JAVA_HOME, passez à bin et entrez la commande jconsole.

Intégrer ActiveMQ dans Tomcat : trois points de connaissances importants à maîtriser

Après le démarrage de jconsole, sélectionnez le processus où se trouve ActiveMQ. Après la connexion, sélectionnez l'onglet Mbean

Intégrer ActiveMQ dans Tomcat : trois points de connaissances importants à maîtriser

Les cases rouges indiquent respectivement le nombre de messages qui ont été consommés et ceux qui sont entrés dans MQ. Sélectionnez l'opération, recherchez le SendTextMessage et vous pouvez également envoyer des messages à cette file d'attente.

4. Selvelt démarre avec Tomcat

Pour Tomcat et Selvelt après Tomcat7, la valeur >=0 signifie que plus la valeur est petite, plus la priorité est élevée loadOnStartup <. 🎜>

5. Résumé
 // author:herbert qq:464884492
@WebServlet(urlPatterns = "/initmq", loadOnStartup = 1)
public class InitMqServlet extends HttpServlet {
@Override
public void init(ServletConfig config) throws ServletException {
        super.init(config);
        // 这里编写启动ActiveMQ代码
 }
}
Copier après la connexion

Cette fois, ActiveMQ est utilisé comme point d'entrée pour l'utilisation de la file d'attente de messages. De manière générale, tout s'est bien passé. Le seul problème est qu'il s'appuie trop sur activeMQ et sur jar

, ce qui entraîne la connexion des messages mais leur envoi. Plus tard, je l'ai changé directement en

, et il y a eu un conflit de journal slf4j. L'utilisation de activemq-broker n'a toujours pas résolu le problème. En fin de compte, s'appuyer uniquement sur activemq-all résout parfaitement tous les problèmes. exclusions activemq-coreArticles associés :

Articles associés :


Persistance des messages JMS, conservation des messages ActiveMQ dans la base de données mySql

Compréhension des paramètres de session dans ActiveMQ

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Nombre parfait en Java Nombre parfait en Java Aug 30, 2024 pm 04:28 PM

Guide du nombre parfait en Java. Nous discutons ici de la définition, comment vérifier le nombre parfait en Java ?, des exemples d'implémentation de code.

Weka en Java Weka en Java Aug 30, 2024 pm 04:28 PM

Guide de Weka en Java. Nous discutons ici de l'introduction, de la façon d'utiliser Weka Java, du type de plate-forme et des avantages avec des exemples.

Numéro de Smith en Java Numéro de Smith en Java Aug 30, 2024 pm 04:28 PM

Guide du nombre de Smith en Java. Nous discutons ici de la définition, comment vérifier le numéro Smith en Java ? exemple avec implémentation de code.

Questions d'entretien chez Java Spring Questions d'entretien chez Java Spring Aug 30, 2024 pm 04:29 PM

Dans cet article, nous avons conservé les questions d'entretien Java Spring les plus posées avec leurs réponses détaillées. Pour que vous puissiez réussir l'interview.

Break or Return of Java 8 Stream Forach? Break or Return of Java 8 Stream Forach? Feb 07, 2025 pm 12:09 PM

Java 8 présente l'API Stream, fournissant un moyen puissant et expressif de traiter les collections de données. Cependant, une question courante lors de l'utilisation du flux est: comment se casser ou revenir d'une opération FOREAK? Les boucles traditionnelles permettent une interruption ou un retour précoce, mais la méthode Foreach de Stream ne prend pas directement en charge cette méthode. Cet article expliquera les raisons et explorera des méthodes alternatives pour la mise en œuvre de terminaison prématurée dans les systèmes de traitement de flux. Lire plus approfondie: Améliorations de l'API Java Stream Comprendre le flux Forach La méthode foreach est une opération terminale qui effectue une opération sur chaque élément du flux. Son intention de conception est

Horodatage à ce jour en Java Horodatage à ce jour en Java Aug 30, 2024 pm 04:28 PM

Guide de TimeStamp to Date en Java. Ici, nous discutons également de l'introduction et de la façon de convertir l'horodatage en date en Java avec des exemples.

Programme Java pour trouver le volume de la capsule Programme Java pour trouver le volume de la capsule Feb 07, 2025 am 11:37 AM

Les capsules sont des figures géométriques tridimensionnelles, composées d'un cylindre et d'un hémisphère aux deux extrémités. Le volume de la capsule peut être calculé en ajoutant le volume du cylindre et le volume de l'hémisphère aux deux extrémités. Ce tutoriel discutera de la façon de calculer le volume d'une capsule donnée en Java en utilisant différentes méthodes. Formule de volume de capsule La formule du volume de la capsule est la suivante: Volume de capsule = volume cylindrique volume de deux hémisphères volume dans, R: Le rayon de l'hémisphère. H: La hauteur du cylindre (à l'exclusion de l'hémisphère). Exemple 1 entrer Rayon = 5 unités Hauteur = 10 unités Sortir Volume = 1570,8 unités cubes expliquer Calculer le volume à l'aide de la formule: Volume = π × r2 × h (4

Comment exécuter votre première application Spring Boot dans Spring Tool Suite? Comment exécuter votre première application Spring Boot dans Spring Tool Suite? Feb 07, 2025 pm 12:11 PM

Spring Boot simplifie la création d'applications Java robustes, évolutives et prêtes à la production, révolutionnant le développement de Java. Son approche "Convention sur la configuration", inhérente à l'écosystème de ressort, minimise la configuration manuelle, allo

See all articles