Inhaltsverzeichnis
ActiveMQ eingebettet in Tomcat
1. Aktivieren Sie BrokerService
2. Produzenten und Konsumenten
3. Überwachen Sie eingebettetes ActiveMQ
4. Selvelt startet mit Tomcat
Heim Java javaLernprogramm ActiveMQ in Tomcat einbetten: Drei wichtige Wissenspunkte müssen beherrscht werden

ActiveMQ in Tomcat einbetten: Drei wichtige Wissenspunkte müssen beherrscht werden

Aug 03, 2018 pm 02:34 PM
java

ActiveMQ eingebettet in Tomcat

In manchen Projekten ist das separate Öffnen eines ActiveMQ für die Projektumsetzung manchmal etwas umständlich. Also betten wir ActiveMQ in Tomcat ein und ActiveMQ wird gleichzeitig mit Tomcat gestartet. Daraus müssen wir drei wichtige Wissenspunkte beherrschen
  • BrokerService in ActiveMQ

  • Automatisch startende Servlet-Konfiguration

  • Verwenden Sie jconsole, um den Ausführungsstatus von eingebettetem ActiveMQ zu verstehen

1. Aktivieren Sie BrokerService

Fügen Sie eine ActiveMQ-Abhängigkeit in pom.xml hinzu , Denken Sie daran: activemq-core reicht aus.

<dependency>
    <groupId>org.apache.activemq</groupId>
    <artifactId>activemq-core</artifactId>
    <version>5.7.0</version>
</dependency>
Nach dem Login kopieren

Achten Sie beim Schreiben des BrokerService-Codes auf drei Hauptpunkte

  1. Ob Überwachungsinformationen in jconsolebroker.setUseJmx(true)

    angezeigt werden müssen
  2. Legen Sie den Benutzernamen und das Passwort für die Verbindung fest, wie Sie das Verifizierungs-Plug-in verwenden

  3. Ob beibehalten werden soll, Speicherorteinstellungen, Persistenzkonfiguration

Sie müssen also eine Verbindungsadresse tcp://localhost:61616 starten, der Benutzername ist admin, das Passwort ist admin, es muss beibehalten werden, die Speicheradresse der persistenten Datendatei ist /activemq, und Sie müssen den von jconsole überwachten Code von BrokerService wie folgt starten:

    // 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();
Nach dem Login kopieren

2. Produzenten und Konsumenten

In ActiveMQ gibt es zwei allgemeine Nachrichtenübermittlungsmethoden

  • Warteschlange, die die Persistenz von Nachrichten unterstützt, nicht verbrauchte Nachrichten sind nach dem Neustart weiterhin vorhanden. Wenn mehrere Verbraucher vorhanden sind, teilen sich alle Verbraucher die Nachricht

  • gleichermaßen in der Warteschlange. Die Nachrichtenpersistenz wird nicht unterstützt und nicht verbrauchte Nachrichten wird sein. Nachrichten gehen nach dem Neustart verloren. Wenn mehrere Verbraucher vorhanden sind, verbraucht jeder Verbraucher nacheinander alle Nachrichten im Thema

Unabhängig davon, ob sie vom Produzenten- oder Verbrauchercode geschrieben wurden, gibt es hauptsächlich 4 Schritte

  1. Stellen Sie eine Verbindung her, verwenden Sie die failover:()-Methode, trennen Sie die Verbindung automatisch und stellen Sie die Verbindung wieder her

  2. Herstellen Session, erhalten Sie das Senden oder Empfangen ZielDestination , geben Sie an, ob es sich um eine Warteschlange (session.createQueue(queueName)) oder ein Thema (session.createTopic(topicName)) handelt

  3. Bringen Sie den Produzenten oder Verbraucher durch Session

  4. Nachrichten produzieren oder konsumieren

Wir schreiben jetzt einen Produzentencode und eine Schleife, um 10 Nachrichten zu generieren

 // 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);
}
Nach dem Login kopieren

Schreiben Sie einen Verbraucher, der die 10 Nachrichten konsumiert oben

 // 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();
        }
     }
});
Nach dem Login kopieren

Betriebseffekt

ActiveMQ in Tomcat einbetten: Drei wichtige Wissenspunkte müssen beherrscht werden

Es ist ersichtlich, dass die 10 von unserem Produzenten generierten Nachrichten vom Verbraucher erfolgreich verarbeitet wurden.

3. Überwachen Sie eingebettetes ActiveMQ

Für eingebettetes ActiveMQ müssen Sie „broker.setUseJmx(true)“ festlegen, bevor Sie BrokerService starten. Suchen Sie dann Ihr JAVA_HOME, wechseln Sie zu „bin“ und geben Sie den Befehl „jconsole“ ein.

ActiveMQ in Tomcat einbetten: Drei wichtige Wissenspunkte müssen beherrscht werden

Wählen Sie nach dem Start von jconsole den Prozess aus, in dem sich ActiveMQ befindet. Wählen Sie nach dem Herstellen der Verbindung die Registerkarte „Mbean“

ActiveMQ in Tomcat einbetten: Drei wichtige Wissenspunkte müssen beherrscht werden

. Die roten Kästchen zeigen die Anzahl der verbrauchten bzw. in MQ eingegebenen Nachrichten an. Wählen Sie den Vorgang aus, suchen Sie nach SendTextMessage und Sie können auch Nachrichten an diese Warteschlange senden.

4. Selvelt startet mit Tomcat

Für Tomcat- und Selvelt-Versionen nach Tomcat7 bedeutet der Wert >=0, dass ein Selbststart erforderlich ist 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代码
 }
}
Nach dem Login kopieren
5. Zusammenfassung

Dieses Mal wird ActiveMQ als Einstiegspunkt für die Verwendung der Nachrichtenwarteschlange verwendet. Das einzige Problem besteht darin, dass es sich zu sehr auf activeMQ und zu sehr auf jar

verlässt, was dazu führt, dass Nachrichten verbunden, aber nicht gesendet werden. Später habe ich es direkt in activemq-broker geändert und es gab einen SLF4J-Protokollkonflikt. Die Verwendung von activemq-all konnte das Problem immer noch nicht lösen. Am Ende löst nur das Verlassen auf exclusions alle Probleme perfekt. activemq-core

Verwandte Artikel:

Verwandte Artikel:


JMS-Nachrichtenpersistenz, ActiveMQ-Nachrichten in der MySQL-Datenbank beibehalten

Verstehen der Sitzungseinstellungen in ActiveMQ

Das obige ist der detaillierte Inhalt vonActiveMQ in Tomcat einbetten: Drei wichtige Wissenspunkte müssen beherrscht werden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Quadratwurzel in Java Quadratwurzel in Java Aug 30, 2024 pm 04:26 PM

Leitfaden zur Quadratwurzel in Java. Hier diskutieren wir anhand eines Beispiels und seiner Code-Implementierung, wie Quadratwurzel in Java funktioniert.

Perfekte Zahl in Java Perfekte Zahl in Java Aug 30, 2024 pm 04:28 PM

Leitfaden zur perfekten Zahl in Java. Hier besprechen wir die Definition, Wie prüft man die perfekte Zahl in Java?, Beispiele mit Code-Implementierung.

Zufallszahlengenerator in Java Zufallszahlengenerator in Java Aug 30, 2024 pm 04:27 PM

Leitfaden zum Zufallszahlengenerator in Java. Hier besprechen wir Funktionen in Java anhand von Beispielen und zwei verschiedene Generatoren anhand ihrer Beispiele.

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

Leitfaden für Weka in Java. Hier besprechen wir die Einführung, die Verwendung von Weka Java, die Art der Plattform und die Vorteile anhand von Beispielen.

Smith-Nummer in Java Smith-Nummer in Java Aug 30, 2024 pm 04:28 PM

Leitfaden zur Smith-Zahl in Java. Hier besprechen wir die Definition: Wie überprüft man die Smith-Nummer in Java? Beispiel mit Code-Implementierung.

Fragen zum Java Spring-Interview Fragen zum Java Spring-Interview Aug 30, 2024 pm 04:29 PM

In diesem Artikel haben wir die am häufigsten gestellten Fragen zu Java Spring-Interviews mit ihren detaillierten Antworten zusammengestellt. Damit Sie das Interview knacken können.

Brechen oder aus Java 8 Stream foreach zurückkehren? Brechen oder aus Java 8 Stream foreach zurückkehren? Feb 07, 2025 pm 12:09 PM

Java 8 führt die Stream -API ein und bietet eine leistungsstarke und ausdrucksstarke Möglichkeit, Datensammlungen zu verarbeiten. Eine häufige Frage bei der Verwendung von Stream lautet jedoch: Wie kann man von einem Foreach -Betrieb brechen oder zurückkehren? Herkömmliche Schleifen ermöglichen eine frühzeitige Unterbrechung oder Rückkehr, aber die Stream's foreach -Methode unterstützt diese Methode nicht direkt. In diesem Artikel werden die Gründe erläutert und alternative Methoden zur Implementierung vorzeitiger Beendigung in Strahlverarbeitungssystemen erforscht. Weitere Lektüre: Java Stream API -Verbesserungen Stream foreach verstehen Die Foreach -Methode ist ein Terminalbetrieb, der einen Vorgang für jedes Element im Stream ausführt. Seine Designabsicht ist

Zeitstempel für Datum in Java Zeitstempel für Datum in Java Aug 30, 2024 pm 04:28 PM

Anleitung zum TimeStamp to Date in Java. Hier diskutieren wir auch die Einführung und wie man Zeitstempel in Java in ein Datum konvertiert, zusammen mit Beispielen.

See all articles