Installationsmanual ActiveMQ
Installation
Instruktion för installation av ActiveMQ och rekommendationer finns att läsa på soi-toolkits installationsguide för ActiveMQ.
För SKLTP finns det en rekommenderad activemq.xml som kan laddas ner här.
Konfiguration
Minne
Java heapsize konfigureras i ACTIVEMQ_HOME/bin/<operativsystem>/wrapper.conf med:
wrapper.java.initmemory wrapper.java.maxmemory
Rekommendation är att sätta dem till samma värde, på så sätt säkras redan vid uppstart att det faktiskt går att allokera minne för max-värdet (annars är det möjligt att få OutOfMemoryError innan max-värdet uppnås).
Broker minnesutnyttjande konfigureras i ACTIVEMQ_HOME/conf/activemq.xml. Se https://github.com/soi-toolkit/soi-toolkit-mule/wiki/G_RT_-ActiveMQ
<systemUsage> <systemUsage> <memoryUsage> <memoryUsage limit="64 mb"/> </memoryUsage>
Note: för ActiveMQ 5.9 kan följande användas: <memoryUsage percentOfJvmHeap="70" />
Köminne (viktigt vid flow control) konfigureras med memoryLimit. Se exempel activemq.xml och https://github.com/soi-toolkit/soi-toolkit-mule/wiki/G_RT_-ActiveMQ
<policyEntry queue=">" producerFlowControl="true" memoryLimit="1mb">
Dead-letter queue (DLQ) policy
Konfigureras med <deadLetterStrategy>. Se https://github.com/soi-toolkit/soi-toolkit-mule/wiki/G_RT_-ActiveMQ
Disk
Konfigurera var meddelanden lagras genom att sätta sökväg i ACTIVEMQ_HOME/bin/<operativsystem>/wrapper.conf:
set.default.ACTIVEMQ_DATA=%ACTIVEMQ_BASE%/data
Rekommendation:
- Använd inte system/root-partitionen till datalagring (inte bra om systemdisken blir full).
- I datacenter/virtualiserade miljöer: använd SAN/nätverksdisk.
Konfigurera hur mycket disk ActiveMQ ska använda med storeUsage:
<systemUsage> <systemUsage> <memoryUsage> <memoryUsage limit="64 mb"/> </memoryUsage> <storeUsage> <storeUsage limit="100 gb"/> </storeUsage> <tempUsage> <tempUsage limit="50 gb"/> </tempUsage> </systemUsage> </systemUsage>
Not: storeUsage är för persistenta meddelanden, tempUsage är för icke-persistenta meddelanden.
Vid uppstart kontrollerar ActiveMQ att det finns tillräckligt med disk - eller sänker den faktiska gränsan för vad som kommer att användas till vad som finns tillgängligt, då loggas en varning i stil med:
2013-05-06 20:17:44,724 | WARN | Store limit is 100000 mb, whilst the data directory: /home/mule/tp/apache-activemq-5.6.0/data/kahadb only has 82380 mb of usable space | org.apache.activemq.broker.BrokerService | main
Synkron skrivning till disk av meddelanden
Se https://github.com/soi-toolkit/soi-toolkit-mule/wiki/G_RT_-ActiveMQ
JMX
Konfigurera JMX-åtkomst genom att:
Lägga till useJmx="true" i broker-elementet i ACTIVEMQ_HOME/conf/activemq….xml
<broker … useJmx="true">
Avkommentera raderna i ACTIVEMQ_HOME/bin/<operativsystem>/wrapper.conf och ändra "n" i "wrapper.java.additional.n" så att "n" för varje rad nedan är ett nummer i den befintliga sekvensen i filen.
Not: om det är fel i nummersekvensen fungerar inte konfigurationen - men det syns inte vid uppstart av brokern.
# Uncomment to enable jmx #wrapper.java.additional.n=-Dcom.sun.management.jmxremote.port=1616 #wrapper.java.additional.n=-Dcom.sun.management.jmxremote.authenticate=false #wrapper.java.additional.n=-Dcom.sun.management.jmxremote.ssl=false
Not: om JMX-porten är åtkomlig utanför localhost (eller ett hårt säkrat mindre subnät) bör även JMX-access säkras enligt http://activemq.apache.org/jmx.html
Firewall tunnling av JMX, lägg till nedan i ACTIVEMQ_HOME/bin/<operativsystem>/wrapper.conf (under de avkommenterade raderna ovan) och ändra "n" i "wrapper.java.additional.n" så att "n" för varje rad nedan är ett nummer i den befintliga sekvensen i filen.
# Firewall tunnelling of JMX #----------------------------------------------------------------------------- # Note: by default (Java 7) two ports are needed, the com.sun.management.jmxremote.port # and a second port which is dynamically allocated by the server. # To avoid dynamic allocation of the second port, add property # com.sun.management.jmxremote.rmi.port below and set it to the same port as # the first port for convenience (fewer holes in the firewall). # This is available in Java 7 > update 4 according to blog: # "Tunneling JMX in the 7u4 JDK", http://hirt.se/blog/?p=289 # but the property is missing from the official Java docs for both Java 7 and 8: # http://docs.oracle.com/javase/7/docs/technotes/guides/management/agent.html #----------------------------------------------------------------------------- wrapper.java.additional.n=-Dcom.sun.management.jmxremote.rmi.port=1616
- Starta om ActiveMQ för att aktivera inställningarna
Referens: http://activemq.apache.org/jmx.html