Key Visual - Manage Your Business Integration
 

Apr

16

Go Live von Apache Active MQ

By Frank Erbsen on Mo, Apr/16/2012 : 10:56

Welche Anpassungen sollten vor dem Go Live an der Apache Active MQ Brokerkonfiguration vorgenommen werden? Gibt es hier Best Practices? Werden diese ausreichend in der Produktdokumentation beschrieben oder sind diese an anderer Stelle zu finden?

Einleitung

Apache Active MQ ist ein Opensource Messaging System, welches zur Auflösung der engen Kopplung zwischen Anwendungen genutzt werden kann. Neben der in diesem Projekt im Fokus stehenden Java JMS API wieder unter anderem auch eine REST, C und .NET API zur Kommunikation zwischen Anwendung und Messagingsystem zur Verfügung gestellt.

KahaDB Bug in der Active MQ Version 5.4.0

Damit Nachrichten dauerhaft gespeichert werden, muss ein persistenceAdapter konfiguriert werden. Hier ist aufgrund der Performancevorteile die KahaDB dem AMQ Message Store vorzuziehen. Wie Vorabtests der Apache Active MQ Instanz ergaben, besteht in der Apache Active MQ 5.4.0 Version ein Bug in der Implementierung der dateibasierten KahaDB. Die Nachrichten in Queues werden bei Nutzung in sogenannten Log-Dateien, unterhalb des kahadb Verzeichnis, abgebildet. Die Logdateien werden dabei schrittweise hochgezählt. Im Stresstest zeigte sich, dass Active MQ ab einem bestimmten Zeitpunkt, die Logdateien nicht mehr aufräumte. Selbst bei Leerung aller Queues blieben Log-Dateien bestehen. Parallel dazu wuchs der genutzte Java Heap kontinuierlich an. Mit einer Migration auf die Version 5.5.1 konnten beide Probleme behoben werden.

root@debian:/opt/apache-activemq-5.5.1/data/kahadb# ls

db-66.log db.data db.redo lock

Listing 1: Ablageort der KahaDB Logdateien

Optimierung für erhöhte Lastaufkommen

Bei erhöhter Last sollten im Startup Skript der Active MQ Instanz die Konfigurationsparameter zum Start der Instanz sowie das memoryUsage Limit hochgesetzt werden.

root@debian:/opt/apache-activemq-5.5.1/bin# cat activemq | grep Xmx

ACTIVEMQ_OPTS_MEMORY="-Xms1024M -Xmx1024M"

Listing 2: Anpassung der Konfigurationsparameter am Beispiel des Default Startupskriptes

Anpassungen im Bereich Schwellwerte, Deadletter Queues, Logging & Security

In Abhängigkeit von der Anzahl der Clients, der Größe der Nachrichten und des Transaktionsumfanges sollten weiterhin die producerFlowControl memoryLimit Werte angepasst werden um das Blocking von Producern zu vermeiden. Einem Vollaufen der Festplatte kann mittels Setzen des storeUsage Wertes entgegengewirkt werden. Ein schwerwiegender Fehler tritt auf, wenn der storeUsage Wert nicht erreicht ist, aber die Festplatte bereits voll ist. Um eine automatische Reprozessierung von Nachrichten in Deadletter Queues zu ermöglichen, sollte grundsätzlich immer das Default DLQ Verhalten mittels einer deadLetterStrategy überschrieben werden. Das serverseitige Logging nach activemq.log erwies sich leider als weniger hilfreich. Häufig werden wichtige Fehler nur auf dem INFO Level geloggt. Dementsprechend sollte das Logging Level unbedingt hochgesetzt werden. Für clientseitiges Logging der Active MQ Bibliotheken ist unbedingt eine entsprechende log4j.properties zu hinterlegen. Ansonsten gibt der Java Client keinerlei Hinweise, die für das Debugging genutzt werden können. Im Security Bereich ist auf die Absicherung der Webkonsole und JMX-Schnittstelle sowie der Vergabe von Zugriffsrechten auf Queues und Topics zu achten.

<systemUsage>

<systemUsage sendFailIfNoSpace="true">

<memoryUsage>

<memoryUsage limit="500 mb"/>

</memoryUsage>

<storeUsage>

<storeUsage limit="1 gb"/>

</storeUsage>

<tempUsage>

<tempUsage limit="100 mb"/>

</tempUsage>

</systemUsage>

</systemUsage>

Listing 3: Anpassung der Usage-Werte

Qualität der Produktdokumentation & alternative Informationsquellen

Insgesamt zeigte sich deutlich bei der Einführung von Apache Active MQ, dass individuelle Lasttests unter anderem zur Ermittlung geeigneter Schwellwerte für Limit-Werte absolut unverzichtbar sind. Hier gibt es keine allgemeinen Berechnungsformeln. Viele der offenen Fragen konnten lediglich durch den Austausch mit aktiven Active MQ Comittern beantwortet werden. Sehr enttäuscht war ich von der Active MQ Produktdokumentation, die bestimmte Konfigurationsparameter häufig kaum oder in einem Fall sogar fehlerhaft beschreibt. Hier erwies sich das Active MQ Forum als deutlich bessere erste Anlaufstelle.

Fazit

Bei dem Go Live einer Active MQ Instanz sind einige Aspekte zu berücksichtigen, die kaum dokumentiert sind. Soll die Inbetriebnahme unter hohem zeitlichen Druck erfolgen, kann diese nur mittels Einsatz von erfahrenem Personal erfolgreich erzielt werden.


Margin
Blog-Autor
Frank Erbsen
Frank Erbsen
Software Engineer
+49 221 97343-47
Margin
Informationen
7.0.1  7.0.2  8.0  Absatzmarkt  Active MQ  Active  Administration  Agile Lösungen  Agility  AMS  Analyst  Analytics  Anbindung  Anforderungen  Anwenderkonfernz  Apache  Application Server  API Management  API  AS2  ASP  Automatisierung  b2b  B2B Integration  Basic  Big Data  Blogreihe  Bluemix  Blueworks  BPM  Broker  BRMS  Bus  Business Process Management  Business Rules  Buzzword  Camel  Cast Iron  Cloud API  Cloud Computing  Cloud Integration  Cloud  Commerce  Compliance  Conference  Connect:Direct  CPLEX  CXF  DataPower  Decision Server Insights  Deployer  Deployment  Development  DFDL  Digitalisierte Prozesse  Digitalisierung  Domino  DSI  e-Fachverfahren  ersteinrichtung  Edi  Edition  Einführung  Einsatz  Entscheidung  Entwicklung  ESB  Excel  Fahrplanoptimierung  Features  Federated Connectivity  File Transfer  Filetransfer  Finance  FTE  gentran  gis  Geschäftsprozesse  Go Live  Google  Governance  Hardware ESB  Hosting  Hybrid-Cloud  Hybrid Cloud  Hybrid  IBM Blueworks  IBM BPM  IBM Integration Bus  IBM InterConnect  IBM  ILOG DOC  ILOG LNP  ILOG Transportation Analyst  ILOG  Impact  Infrastruktur  Installation  Integration as a Service  Integration Bus  Integration  Integrator  Interoperabilität  IT-Business-Alignment  Konfiguration  Linear  LNP  Logistik  monitoring  M2M  Manage File Transfer  Management  Marktplatz  Mathematik  Mediation  Message Broker  Messages  Messagesight  Messaging  MFT  Migration  Modellierung  MQ  MQTT  Multicast  Muster  Nachlese  Neuerungen in V7.0.1  Neuerungen  off-premise  on-premise  ODM  ODME  Öffentliche Verwaltung  Open Source  Operational Decision Management  Optimierung  OPL  OSGi  Outsourcing  PaaS  Pattern Integration  Pattern  Patterns  Performance  Portfolio  Praxis  Private  Process Server  Produktionsplanung  Prozessautomatisierung  Prozessintegration  Prozessmodelierung  Prozessoptimierung  PureSystem  Qualität  Real Time  Regelmanagement  Rollen  Routenplanung  Routing  ROI  SaaS API  SaaS Integration  SaaS  Salesforce  Schwerpunktanalyse  Script  SCM  Security  Service Federation Management  Servicemix  SFM  SI  Slotting  SoapUI  SOA Cloud Symposium  SOA  SPSS  Standard  Standardplattform  Standardtool  Standortoptimierung  Sterling Integrator  Sterling  SugarCRM  Symposium  Template  TIP  TM1  TOSCA  Transportation  Transportoptimierung  Übersicht  Umstieg  Unix  Update  vergleich  Vorteile  worklight  workload  wtc  Wartung  Websphere  Websphere: Rollen  WebService Security  WebSphere Enterprise Service Bus  WebSphere ESB  WebSphere MessageBroker  WebSphere Technical Conference  WebSphere  WESB  Workloads  WODM  XAR