Unix Shell 脚本

功能 > Unix > Unix Shell 脚本

功能概述

从 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
    

配置 init 脚本

为了使 ActiveMQ Classic 服务器正常运行,必须设置一些基本的系统变量。这些变量定义了代理将拥有的内存量、SSL、日志记录、JAAS 选项等。

5.11.0 及更高版本

init 脚本的配置文件

从 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”文件夹移出安装路径
  • 安装 init 脚本
    ln -snf  /srv/activemq/current/bin/activemq /etc/init.d/activemq
    
  • 在系统启动时激活 init 脚本
    (待办事项:不完整)
    # 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 软件基金会的商标。版权所有 © 2024,Apache 软件基金会。根据 Apache 许可证 2.0 许可。