


Intégrer ActiveMQ dans Tomcat : trois points de connaissances importants à maîtriser
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>
Lors de l'écriture du code BrokerService
, faites attention à trois points principaux
Si les informations de surveillance doivent être affichées dans
jconsole
broker.setUseJmx(true)
Définir le nom d'utilisateur et le mot de passe de connexion, comment utiliser le plug-in de vérification
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();
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
Établir une connexion, utiliser la méthode
failover:()
, se déconnecter et se reconnecter automatiquementÉ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)
)Obtenez le producteur ou le consommateur via
Session
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); }
É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(); } } });
Effet de l'opération
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.
Après le démarrage de jconsole, sélectionnez le processus où se trouve ActiveMQ. Après la connexion, sélectionnez l'onglet Mbean
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
<. 🎜>
// 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代码 } }
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-core
Articles associés :
Articles associés :
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!

Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

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.

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.

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.

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.

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

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.

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

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
