Unix Shell Script

功能 > Unix > Unix Shell Script

功能概述

從 5.4.0 版本開始,ActiveMQ Classic 配備了增強的 shell 腳本,用於在 Unix 環境中啟動、停止和管理代理程式。如需基本 activemqactivemq-admin 腳本的功能,請參閱ActiveMQ Classic 命令列工具參考

這個 activemq 腳本將這兩個腳本合併為一個,並新增了一些新功能。除了常規的 activemqactivemq-admin 腳本外,它還新增了以下功能

  • start - 在背景啟動代理程式。它將處理程序 ID 保存在 ${ACTIVEMQ_DATA_DIR}/activemq.pid 中,以供日後參考。它接受與原始 activemq 腳本相同的命令列參數,因此您可以執行如下操作
    bin/activemq start xbean:conf/activemq-stomp.xml
    
  • console - 在前景啟動代理程式。它基本上取代了舊的 activemq 腳本
    (您可以中斷)

  • stop - 停止在背景執行的代理程式。它會先嘗試使用 shutdown 工作來停止代理程式。如果該工作在 30 秒(可設定)內沒有返回,它將終止該進程。

  • restart - 停止正在執行的實例(如果有的話),並啟動新的實例

  • status - 檢查 activemq 進程是否正在執行(結束代碼:1 = 代理程式已關閉,0 = 代理程式已啟動)

  • create - 建立一個 ACTIVEMQ_BASE 目錄,將代理程式實例與其二進位檔案分開,也就是說,它會在命令列指定的目錄中建立 ActiveMQ Classic 設定檔的副本,並指向二進位檔案。您可以使用新建立的實例中的 /bin 腳本啟動代理程式。
    bin/activemq create /path/to/brokers/mybroker 
    
  • browse - 顯示指定目的地中的選定訊息
    bin/activemq browse FOO.BAR # use broker connection from configuration
    bin/activemq browse --amqurl tcp://127.0.0.1:61616 FOO.BAR
    
  • bstat - 執行預定義的查詢,顯示有關指定代理程式的有用統計資料

  • dstat - 執行預定義的查詢,顯示有關指定目的地類型的有用表格統計資料

  • decrypt - 解密給定的文字
    bin/activemq decrypt --input 'BkiT42A0CZfL1SanJIgxvQ==' --password asdasdasdasd
    
  • encrypt - 加密給定的文字
    bin/activemq encrypt --password TESTPASSWORD --input FOOBAR
    
  • export - 將停止的代理程式資料檔案匯出到封存檔案,以便匯入到其他代理程式(例如 ActiveMQ Artemis)
    $ bin/activemq export --file=archivefile
    
  • list - 列出指定 JMX 環境中所有可用的代理程式

  • purge - 刪除與訊息選擇器相符的選定目的地的訊息
    bin/activemq purge FOO.BAR # use jmx access data from configuration
    bin/activemq purge --jmxurl service:jmx:rmi:///jndi/rmi://127.0.0.1:11098/jmxrmi --jmxuser controlRole --jmxpassword abcd1234 FOO.BAR
    
  • query - 顯示選定代理程式元件的屬性和統計資料
    bin/activemq query # use jmx access data from configuration
    bin/activemq query --jmxurl service:jmx:rmi:///jndi/rmi://127.0.0.1:11098/jmxrmi --jmxuser controlRole --jmxpassword abcd1234
    

設定初始化腳本

為了讓 ActiveMQ Classic 伺服器正常運作,必須設定一些基本的系統變數。這些變數定義了代理程式將擁有的記憶體量、SSL、記錄、JAAS 選項等等。

5.11.0 及更高版本

初始化腳本的設定檔

從 5.11.0 版本開始,所有預設設定變數都已移至新的 env 腳本檔案,以便可以輕鬆地檢查和設定它們。
還有其他設定位置

腳本會依下列順序掃描以下位置的設定

  1. /etc/default/activemq
  2. $HOME/.activemqrc
  3. $INSTALLDIR/apache-activemq-/bin/env

只會讀取第一個存在的檔案,其他檔案都會被忽略。
未定義的值會以自動方式探索。

5.11.0 之前的版本

這些參數可在 activemq 腳本本身中設定。

您可以使用 setup 命令建立額外的系統範圍預設檔案來設定代理程式。
(如果需要,請修改此檔案中的設定 - 由於此版本中意外套用了錯誤修復,預設條目看起來有點亂)

./activemq setup /etc/default/activemq

腳本的設定可以放在 /etc/default/activemq$HOME/.activemqrc 中。請注意,這是腳本的設定,而不是用於設定 ActiveMQ Classic 的設定。

若要使用額外設定在同一個作業系統上執行多個實例,請將腳本重新命名或符號連結為符合 activemq-instance-<INSTANCENAME> 的名稱。這會將設定位置變更為 /etc/default/activemq-instance-<INSTANCENAME>$HOME/.activemqrc-instance-<INSTANCENAME>。/etc 中的設定檔具有較高的優先順序。

以 Unix 精靈執行 activemq

  • 以「root」身分安裝 activemq 代理程式,使其以「activemq」身分執行
    useradd -m activemq -d /srv/activemq
    cd /srv/activemq
    tar zxvf apache-activemq-<version>-bin.tar.gz$ ln -snf apache-activemq-<version> current
    chown -R activemq:users apache-activemq-<version>
    
  • 建立全域預設設定並編輯設定
    cp apache-activemq-<version>/bin/env /etc/default/activemq
    sed -i '~s/^ACTIVEMQ\_USER=""/ACTIVEMQ\_USER="activemq"/' /etc/default/activemq
    vim /etc/default/activemq
    chmod 644 /etc/default/activemq
    
    • 將 Java 堆積設定為適合您系統環境和使用量的容量
    • 考慮將「data」、「tmp」和「conf」資料夾移出安裝路徑
  • 安裝初始化腳本
    ln -snf  /srv/activemq/current/bin/activemq /etc/init.d/activemq
    
  • 在系統啟動時啟用初始化腳本
    (待辦事項:未完成)
    # RHEL
    chkconfig --add activemq
    chkconfig activemq on
        
    # Debian/Ubuntu
    update-rc.d defaults activemq
    

執行多個實例

若要使用額外設定在同一個作業系統上執行多個實例,請將腳本重新命名或符號連結為符合 activemq-instance-<INSTANCENAME> 的名稱。
這會將設定位置變更為 /etc/default/activemq-instance-<INSTANCENAME>$HOME/.activemqrc-instance-<INSTANCENAME>。/etc 中的設定檔具有較高的優先順序。

適用於「以 Unix 精靈執行 activemq」程序的範例程序

範例**

mkdir /srv/activemq/instance1
cp -av /srv/activemq/current/conf/ /srv/activemq/instance1/
mkdir /srv/activemq/instance1/{data,tmp}
ln -snf  /srv/activemq/current/bin/activemq /etc/init.d/activemq-instance-test1
cp /srv/activemq/install/bin/env /etc/default/activemq-instance-instance-test1

修改 /etc/default/activemq-instance-instance-test1 中的設定變數

ACTIVEMQ_HOME="/srv/activemq/current/"
ACTIVEMQ_CONF="/srv/activemq/instance1/conf"
ACTIVEMQ_DATA="/srv/activemq/instance1/data"
ACTIVEMQ_TMP="/srv/activemq/instance1/tmp"

控制實例

/etc/init.d/activemq-instance1 start|stop|restart|console|....

提示

如果您使用多個實例,則只能使用(「update-rc.d」或「chkconfig」)將主要實例新增至自動系統啟動,因為 LSB 標頭「Provides」必須是唯一的。

測試和回報 Unix 平台互通性問題

activemq 儲存庫提供了一個測試套件,用於驗證 Unix shell 腳本在不同平台上的正確運作。

  • 下載測試套件
    或者,複製原始程式碼儲存庫(來源)並選擇檔案 assembly/src/test/scripts/init-script-testsuite
    cd /tmp
    wget -c "https://git-wip-us.apache.org/repos/asf?p=activemq.git;a=blob_plain;f=assembly/src/test/scripts/init-script-testsuite;hb=HEAD"
    
  • 執行測試套件
    cd <Installation Dir of the ActiveMQ Classic Script>
    ./activemq stop
    /tmp/init-script-testsuite 2>&1| tee /tmp/test-suite.log
    
  • 可以透過下列程序提供詳細的偵錯資訊
    export PS4=' ${BASH_SOURCE}:${LINENO}(${FUNCNAME\[0\]}) '
    bash -x ./activemq <argument> 2>&1 |tee /tmp/detailed-debugging.log
    
  • 建立票證並將記錄檔附加到票證。

Apache、ActiveMQ、Apache ActiveMQ、Apache 羽毛標誌和 Apache ActiveMQ 專案標誌是 Apache 軟體基金會的商標。Copyright © 2024,Apache 軟體基金會。根據 Apache License 2.0 授權。