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

  1. 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).

  2. 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" />

     

  3. 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

  1. 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:

    1. Använd inte system/root-partitionen till datalagring (inte bra om systemdisken blir full).
    2. I datacenter/virtualiserade miljöer: använd SAN/nätverksdisk.

  2. 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:

  1. Lägga till useJmx="true" i broker-elementet i ACTIVEMQ_HOME/conf/activemq….xml

     <broker … useJmx="true">
  2. 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

  3. 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
  4. Starta om ActiveMQ för att aktivera inställningarna

Referens: http://activemq.apache.org/jmx.html