All checks were successful
Build Helm Chart / helm-package (push) Successful in 7s
445 lines
18 KiB
Bash
Executable File
445 lines
18 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
if [ "${SCRIPT_DEBUG}" = "true" ] ; then
|
|
set -x
|
|
echo "Script debugging is enabled, allowing bash commands and their arguments to be printed as they are executed"
|
|
fi
|
|
|
|
|
|
export BROKER_IP=`hostname -I`
|
|
CONFIG_TEMPLATES=/config_templates
|
|
|
|
#GC Option conflicts with the one already configured.
|
|
echo "Removing provided -XX:+UseParallelOldGC in favour of artemis.profile provided option"
|
|
JAVA_OPTS=$(echo $JAVA_OPTS | sed -e "s/-XX:+UseParallelOldGC/ /")
|
|
PLATFORM=`uname -m`
|
|
echo "Platform is ${PLATFORM}"
|
|
if [ "${PLATFORM}" = "s390x" ] ; then
|
|
#GC Option found to be a problem on s390x
|
|
echo "Removing -XX:+UseG1GC as per recommendation to use default GC"
|
|
JAVA_OPTS=$(echo $JAVA_OPTS | sed -e "s/-XX:+UseG1GC/ /")
|
|
#JDK11 related warnings removal
|
|
echo "Adding -Dcom.sun.xml.bind.v2.bytecode.ClassTailor.noOptimize=true as per ENTMQBR-1932"
|
|
JAVA_OPTS="-Dcom.sun.xml.bind.v2.bytecode.ClassTailor.noOptimize=true ${JAVA_OPTS}"
|
|
fi
|
|
JAVA_OPTS="-Djava.net.preferIPv4Stack=true ${JAVA_OPTS}"
|
|
|
|
if [ "$AMQ_ENABLE_JOLOKIA_AGENT" = "true" ]; then
|
|
echo "Define jolokia jvm agent options"
|
|
|
|
if [ -z ${AMQ_JOLOKIA_AGENT_OPTS} ]; then
|
|
if [ -f "/var/run/secrets/kubernetes.io/serviceaccount/service-ca.crt" ]; then
|
|
AMQ_JOLOKIA_AGENT_OPTS='realm=activemq,caCert=/var/run/secrets/kubernetes.io/serviceaccount/service-ca.crt,clientPrincipal.1=cn=system:master-proxy,clientPrincipal.2=cn=hawtio-online.hawtio.svc,clientPrincipal.3=cn=fuse-console.fuse.svc'
|
|
else
|
|
AMQ_JOLOKIA_AGENT_OPTS='realm=activemq,clientPrincipal.1=cn=system:master-proxy,clientPrincipal.2=cn=hawtio-online.hawtio.svc,clientPrincipal.3=cn=fuse-console.fuse.svc'
|
|
fi
|
|
fi
|
|
|
|
export AB_JOLOKIA_USER=$AMQ_JOLOKIA_AGENT_USER
|
|
export AB_JOLOKIA_PASSWORD_RANDOM=false
|
|
export AB_JOLOKIA_PASSWORD=$AMQ_JOLOKIA_AGENT_PASSWORD
|
|
export AB_JOLOKIA_OPTS="${AMQ_JOLOKIA_AGENT_OPTS}"
|
|
JOLOKIA_OPTS="$(/opt/jolokia/jolokia-opts)"
|
|
echo "JOLOKIA_OPTS: $JOLOKIA_OPTS"
|
|
fi
|
|
|
|
function sslPartial() {
|
|
[ -n "$AMQ_KEYSTORE_TRUSTSTORE_DIR" -o -n "$AMQ_KEYSTORE" -o -n "$AMQ_TRUSTSTORE" -o -n "$AMQ_KEYSTORE_PASSWORD" -o -n "$AMQ_TRUSTSTORE_PASSWORD" ]
|
|
}
|
|
|
|
function sslEnabled() {
|
|
[ -n "$AMQ_KEYSTORE_TRUSTSTORE_DIR" -a -n "$AMQ_KEYSTORE" -a -n "$AMQ_TRUSTSTORE" -a -n "$AMQ_KEYSTORE_PASSWORD" -a -n "$AMQ_TRUSTSTORE_PASSWORD" ]
|
|
}
|
|
|
|
# Finds the environment variable and returns its value if found.
|
|
# Otherwise returns the default value if provided.
|
|
#
|
|
# Arguments:
|
|
# $1 env variable name to check
|
|
# $2 default value if environemnt variable was not set
|
|
function find_env() {
|
|
var=${!1}
|
|
echo "${var:-$2}"
|
|
}
|
|
|
|
function configureUserAuthentication() {
|
|
if [ -n "${AMQ_USER}" -a -n "${AMQ_PASSWORD}" ] ; then
|
|
AMQ_ARGS="$AMQ_ARGS --user $AMQ_USER --password $AMQ_PASSWORD "
|
|
else
|
|
echo "Required variable missing: both AMQ_USER and AMQ_PASSWORD are required."
|
|
exit 1
|
|
fi
|
|
if [ "$AMQ_REQUIRE_LOGIN" = "true" ]; then
|
|
AMQ_ARGS="$AMQ_ARGS --require-login"
|
|
else
|
|
AMQ_ARGS="$AMQ_ARGS --allow-anonymous"
|
|
fi
|
|
}
|
|
|
|
function configureLogging() {
|
|
instanceDir=$1
|
|
if [ "$AMQ_DATA_DIR_LOGGING" = "true" ]; then
|
|
echo "Configuring logging directory to be ${AMQ_DATA_DIR}/log"
|
|
sed -i 's@${artemis.instance}@'"$AMQ_DATA_DIR"'@' ${instanceDir}/etc/logging.properties
|
|
fi
|
|
}
|
|
|
|
function configureNetworking() {
|
|
if [ "$AMQ_CLUSTERED" = "true" ]; then
|
|
echo "Broker will be clustered"
|
|
AMQ_ARGS="$AMQ_ARGS --clustered --cluster-user $AMQ_CLUSTER_USER --cluster-password $AMQ_CLUSTER_PASSWORD --host $BROKER_IP"
|
|
ACCEPTOR_IP=$BROKER_IP
|
|
else
|
|
AMQ_ARGS="$AMQ_ARGS --host 0.0.0.0"
|
|
ACCEPTOR_IP="0.0.0.0"
|
|
fi
|
|
}
|
|
|
|
function configureRedistributionDelay() {
|
|
instanceDir=$1
|
|
echo "Setting redistribution-delay to zero."
|
|
sed -i "s/<address-setting match=\"#\">/&\n <redistribution-delay>0<\/redistribution-delay>/g" ${instanceDir}/etc/broker.xml
|
|
}
|
|
|
|
function configureSSL() {
|
|
sslDir=$(find_env "AMQ_KEYSTORE_TRUSTSTORE_DIR" "")
|
|
keyStoreFile=$(find_env "AMQ_KEYSTORE" "")
|
|
trustStoreFile=$(find_env "AMQ_TRUSTSTORE" "")
|
|
|
|
if sslEnabled ; then
|
|
keyStorePassword=$(find_env "AMQ_KEYSTORE_PASSWORD" "")
|
|
trustStorePassword=$(find_env "AMQ_TRUSTSTORE_PASSWORD" "")
|
|
|
|
keyStorePath="$sslDir/$keyStoreFile"
|
|
trustStorePath="$sslDir/$trustStoreFile"
|
|
|
|
AMQ_ARGS="$AMQ_ARGS --ssl-key $keyStorePath"
|
|
AMQ_ARGS="$AMQ_ARGS --ssl-key-password $keyStorePassword"
|
|
|
|
AMQ_ARGS="$AMQ_ARGS --ssl-trust $trustStorePath"
|
|
AMQ_ARGS="$AMQ_ARGS --ssl-trust-password $trustStorePassword"
|
|
elif sslPartial ; then
|
|
log_warning "Partial ssl configuration, the ssl context WILL NOT be configured."
|
|
fi
|
|
}
|
|
|
|
function updateAcceptorsForSSL() {
|
|
instanceDir=$1
|
|
|
|
if sslEnabled ; then
|
|
|
|
echo "keystore filepath: $keyStorePath"
|
|
|
|
IFS=',' read -a protocols <<< $(find_env "AMQ_TRANSPORTS" "openwire,amqp,stomp,mqtt,hornetq")
|
|
connectionsAllowed=$(find_env "AMQ_MAX_CONNECTIONS" "1000")
|
|
|
|
sslProvider=$(find_env "AMQ_SSL_PROVIDER" "")
|
|
|
|
if [ -z "${sslProvider}" ] ; then
|
|
SSL_OPS="sslEnabled=true;keyStorePath=${keyStorePath};keyStorePassword=${keyStorePassword}"
|
|
else
|
|
SSL_OPS="sslEnabled=true;keyStorePath=${keyStorePath};keyStorePassword=${keyStorePassword};sslProvider=${sslProvider}"
|
|
fi
|
|
|
|
if [ "${#protocols[@]}" -ne "0" ]; then
|
|
acceptors=""
|
|
for protocol in ${protocols[@]}; do
|
|
case "${protocol}" in
|
|
"openwire")
|
|
acceptors="${acceptors} <acceptor name=\"artemis-ssl\">tcp://${ACCEPTOR_IP}:61617?tcpSendBufferSize=1048576;tcpReceiveBufferSize=1048576;protocols=CORE,AMQP,STOMP,HORNETQ,MQTT,OPENWIRE;useEpoll=true;amqpCredits=1000;amqpLowCredits=300;connectionsAllowed=${connectionsAllowed};${SSL_OPS}</acceptor>\n"
|
|
;;
|
|
"mqtt")
|
|
acceptors="${acceptors} <acceptor name=\"mqtt-ssl\">tcp://${ACCEPTOR_IP}:8883?tcpSendBufferSize=1048576;tcpReceiveBufferSize=1048576;protocols=MQTT;useEpoll=true;connectionsAllowed=${connectionsAllowed};${SSL_OPS}</acceptor>\n"
|
|
;;
|
|
"amqp")
|
|
acceptors="${acceptors} <acceptor name=\"amqp-ssl\">tcp://${ACCEPTOR_IP}:5671?tcpSendBufferSize=1048576;tcpReceiveBufferSize=1048576;protocols=AMQP;useEpoll=true;amqpCredits=1000;amqpMinCredits=300;connectionsAllowed=${connectionsAllowed};${SSL_OPS}</acceptor>\n"
|
|
;;
|
|
"stomp")
|
|
acceptors="${acceptors} <acceptor name=\"stomp-ssl\">tcp://${ACCEPTOR_IP}:61612?tcpSendBufferSize=1048576;tcpReceiveBufferSize=1048576;protocols=STOMP;useEpoll=true;connectionsAllowed=${connectionsAllowed};${SSL_OPS}</acceptor>\n"
|
|
;;
|
|
esac
|
|
done
|
|
fi
|
|
safeAcceptors=$(echo "${acceptors}" | sed 's/\//\\\//g')
|
|
sed -i "/<\/acceptors>/ s/.*/${safeAcceptors}\n&/" ${instanceDir}/etc/broker.xml
|
|
fi
|
|
}
|
|
|
|
function updateAcceptorsForPrefixing() {
|
|
instanceDir=$1
|
|
|
|
if [ -n "$AMQ_MULTICAST_PREFIX" ]; then
|
|
echo "Setting multicastPrefix to ${AMQ_MULTICAST_PREFIX}"
|
|
sed -i "s/:61616?/&multicastPrefix=${AMQ_MULTICAST_PREFIX};/g" ${instanceDir}/etc/broker.xml
|
|
sed -i "s/:61617?/&multicastPrefix=${AMQ_MULTICAST_PREFIX};/g" ${instanceDir}/etc/broker.xml
|
|
fi
|
|
|
|
if [ -n "$AMQ_ANYCAST_PREFIX" ]; then
|
|
echo "Setting anycastPrefix to ${AMQ_ANYCAST_PREFIX}"
|
|
sed -i "s/:61616?/&anycastPrefix=${AMQ_ANYCAST_PREFIX};/g" ${instanceDir}/etc/broker.xml
|
|
sed -i "s/:61617?/&anycastPrefix=${AMQ_ANYCAST_PREFIX};/g" ${instanceDir}/etc/broker.xml
|
|
fi
|
|
}
|
|
|
|
function appendAcceptorsFromEnv() {
|
|
instanceDir=$1
|
|
|
|
if [ -n "$AMQ_ACCEPTORS" ]; then
|
|
echo "Using acceptors from environment and removing existing entries"
|
|
sed -i "/acceptor name=/d" ${instanceDir}/etc/broker.xml
|
|
acceptorsFromEnv=$(find_env "AMQ_ACCEPTORS" "")
|
|
# As AMQ_ACCEPTORS was introduced from the operator, the operator makes a safe string for here
|
|
safeAcceptorsFromEnv=$(echo "${acceptorsFromEnv}")
|
|
sed -i "/<\/acceptors>/ s/.*/${safeAcceptorsFromEnv}\n&/g" ${instanceDir}/etc/broker.xml
|
|
sed -i "s/ACCEPTOR_IP/${ACCEPTOR_IP}/g" ${instanceDir}/etc/broker.xml
|
|
fi
|
|
}
|
|
|
|
function appendConnectorsFromEnv() {
|
|
instanceDir=$1
|
|
|
|
if [ -n "$AMQ_CONNECTORS" ]; then
|
|
echo "Appending connectors from environment"
|
|
connectorsFromEnv=$(find_env "AMQ_CONNECTORS" "")
|
|
# As AMQ_CONNECTORS was introduced from the operator, the operator makes a safe string for here
|
|
safeConnectorsFromEnv=$(echo "${connectorsFromEnv}")
|
|
endConnectorsCount=`grep -c '</connectors>' ${instanceDir}/etc/broker.xml`
|
|
if [ ${endConnectorsCount} -ne 0 ]; then
|
|
sed -i "/<\/connectors>/ s/.*/\t\t${safeConnectorsFromEnv}\n&/" ${instanceDir}/etc/broker.xml
|
|
else
|
|
sed -i "/<\/acceptors>/ s/.*/&\n\t<connectors>\n\t\t${safeConnectorsFromEnv}\n\t<\/connectors>\n/" ${instanceDir}/etc/broker.xml
|
|
fi
|
|
fi
|
|
}
|
|
|
|
function appendJournalType() {
|
|
instanceDir=$1
|
|
|
|
if [ -n "$AMQ_JOURNAL_TYPE" ]; then
|
|
echo "Setting journal type to ${AMQ_JOURNAL_TYPE}"
|
|
if [[ $(removeWhiteSpace ${AMQ_JOURNAL_TYPE}) != *"nio"* ]]; then
|
|
AMQ_ARGS="$AMQ_ARGS --aio"
|
|
fi
|
|
if [[ $(removeWhiteSpace ${AMQ_JOURNAL_TYPE}) != *"aio"* ]]; then
|
|
AMQ_ARGS="$AMQ_ARGS --nio"
|
|
fi
|
|
fi
|
|
}
|
|
|
|
function modifyDiscovery() {
|
|
discoverygroup=""
|
|
discoverygroup="${discoverygroup} <discovery-group name=\"my-discovery-group\">"
|
|
discoverygroup="${discoverygroup} <jgroups-file>jgroups-ping.xml</jgroups-file>"
|
|
discoverygroup="${discoverygroup} <jgroups-channel>activemq_broadcast_channel</jgroups-channel>"
|
|
discoverygroup="${discoverygroup} <refresh-timeout>10000</refresh-timeout>"
|
|
discoverygroup="${discoverygroup} </discovery-group> "
|
|
sed -i -ne "/<discovery-groups>/ {p; i $discoverygroup" -e ":a; n; /<\/discovery-groups>/ {p; b}; ba}; p" ${instanceDir}/etc/broker.xml
|
|
|
|
#generate jgroups-ping.xml
|
|
echo "Generating jgroups-ping.xml, current dir is: $PWD, AMQHOME: $AMQ_HOME"
|
|
|
|
if [ -z "${PING_SVC_NAME+x}" ]; then
|
|
echo "PING_SERVICE is not set"
|
|
PING_SVC_NAME=ping
|
|
fi
|
|
|
|
if [ -z "${APPLICATION_NAME+x}" ]; then
|
|
echo "APPLICATION_NAME is not set"
|
|
sed -i -e "s/\${APPLICATION_NAME}-\${PING_SVC_NAME}/${PING_SVC_NAME}/" $AMQ_HOME/conf/jgroups-ping.xml
|
|
else
|
|
echo "APPLICATION_NAME is set"
|
|
sed -i -e "s/\${APPLICATION_NAME}-\${PING_SVC_NAME}/${APPLICATION_NAME}-${PING_SVC_NAME}/" $AMQ_HOME/conf/jgroups-ping.xml
|
|
fi
|
|
|
|
broadcastgroup=""
|
|
broadcastgroup="${broadcastgroup} <broadcast-group name=\"my-broadcast-group\">"
|
|
broadcastgroup="${broadcastgroup} <jgroups-file>jgroups-ping.xml</jgroups-file>"
|
|
broadcastgroup="${broadcastgroup} <jgroups-channel>activemq_broadcast_channel</jgroups-channel>"
|
|
broadcastgroup="${broadcastgroup} <connector-ref>artemis</connector-ref>"
|
|
broadcastgroup="${broadcastgroup} </broadcast-group> "
|
|
sed -i -ne "/<broadcast-groups>/ {p; i $broadcastgroup" -e ":a; n; /<\/broadcast-groups>/ {p; b}; ba}; p" ${instanceDir}/etc/broker.xml
|
|
|
|
clusterconnections=""
|
|
clusterconnections="${clusterconnections} <cluster-connection name=\"my-cluster\">"
|
|
clusterconnections="${clusterconnections} <connector-ref>artemis</connector-ref>"
|
|
clusterconnections="${clusterconnections} <retry-interval>1000</retry-interval>"
|
|
clusterconnections="${clusterconnections} <retry-interval-multiplier>2</retry-interval-multiplier>"
|
|
clusterconnections="${clusterconnections} <max-retry-interval>32000</max-retry-interval>"
|
|
clusterconnections="${clusterconnections} <initial-connect-attempts>20</initial-connect-attempts>"
|
|
clusterconnections="${clusterconnections} <reconnect-attempts>10</reconnect-attempts>"
|
|
clusterconnections="${clusterconnections} <use-duplicate-detection>true</use-duplicate-detection>"
|
|
clusterconnections="${clusterconnections} <message-load-balancing>ON_DEMAND</message-load-balancing>"
|
|
clusterconnections="${clusterconnections} <max-hops>1</max-hops>"
|
|
clusterconnections="${clusterconnections} <discovery-group-ref discovery-group-name=\"my-discovery-group\"/>"
|
|
clusterconnections="${clusterconnections} </cluster-connection> "
|
|
sed -i -ne "/<cluster-connections>/ {p; i $clusterconnections" -e ":a; n; /<\/cluster-connections>/ {p; b}; ba}; p" ${instanceDir}/etc/broker.xml
|
|
}
|
|
|
|
function configureJAVA_ARGSMemory() {
|
|
instanceDir=$1
|
|
echo "Removing hardcoded -Xms -Xmx from artemis.profile in favour of JAVA_OPTS in log above"
|
|
sed -i "s/\-Xms[0-9]*[mMgG] \-Xmx[0-9]*[mMgG] \-Dhawtio/\ -Dhawtio/g" ${instanceDir}/etc/artemis.profile
|
|
}
|
|
|
|
function configureJolokiaJVMAgent() {
|
|
instanceDir=$1
|
|
if [ "$AMQ_ENABLE_JOLOKIA_AGENT" = "true" ]; then
|
|
echo "Configure jolokia jvm agent"
|
|
echo "JOLOKIA_OPTS: $JOLOKIA_OPTS"
|
|
echo '' >> ${instanceDir}/etc/artemis.profile
|
|
echo "if [ \"\$1\" = \"run\" ]; then JAVA_ARGS=\"\$JAVA_ARGS $JOLOKIA_OPTS\"; fi" >> ${instanceDir}/etc/artemis.profile
|
|
echo '' >> ${instanceDir}/etc/artemis.profile
|
|
fi
|
|
}
|
|
|
|
function injectMetricsPlugin() {
|
|
instanceDir=$1
|
|
echo "Adding artemis metrics plugin"
|
|
sed -i "s/^\([[:blank:]]*\)<\\/core>/\1\1<metrics-plugin class-name=\"org.apache.activemq.artemis.core.server.metrics.plugins.ArtemisPrometheusMetricsPlugin\"\\/>\\n\1<\\/core>/" $instanceDir/etc/broker.xml
|
|
|
|
if ! grep -q 'metrics' $instanceDir/etc/bootstrap.xml; then
|
|
sed -i 's~</binding>~<app url="metrics" war="metrics.war"/></binding>~' $instanceDir/etc/bootstrap.xml
|
|
fi
|
|
|
|
}
|
|
|
|
function checkBeforeRun() {
|
|
instanceDir=$1
|
|
if [ "$AMQ_ENABLE_METRICS_PLUGIN" = "true" ]; then
|
|
pluginStr="com.redhat.amq.broker.core.server.metrics.plugins.ArtemisPrometheusMetricsPlugin"
|
|
grep -q "$pluginStr" ${instanceDir}/etc/broker.xml
|
|
result=$?
|
|
if [[ $result == 0 ]]; then
|
|
echo "The Prometheus plugin already configured."
|
|
else
|
|
echo "Need to inject Prometheus plugin"
|
|
injectMetricsPlugin ${instanceDir}
|
|
fi
|
|
fi
|
|
|
|
if [[ "${JAVA_ARGS_APPEND}" == *"-Dlog4j2.configurationFile"* ]]; then
|
|
echo "There is a custom logger configuration defined in JAVA_ARGS_APPEND: ${JAVA_ARGS_APPEND}"
|
|
else
|
|
echo "Using default logging configuration(console only)"
|
|
defaultLoggingConfigFile=${instanceDir}/etc/log4j2.properties
|
|
sed -i "s/rootLogger = INFO, console, log_file/rootLogger = INFO, console/g" $defaultLoggingConfigFile
|
|
fi
|
|
}
|
|
|
|
function configure() {
|
|
instanceDir=$1
|
|
|
|
export CONTAINER_ID=$HOSTNAME
|
|
if [ ! -d ${instanceDir} -o "$AMQ_RESET_CONFIG" = "true" -o ! -f ${instanceDir}/bin/artemis ]; then
|
|
AMQ_ARGS="--silent --role $AMQ_ROLE --name $AMQ_NAME --http-host $BROKER_IP --java-options=-Djava.net.preferIPv4Stack=true "
|
|
configureUserAuthentication
|
|
if [ -n "$AMQ_DATA_DIR" ]; then
|
|
AMQ_ARGS="$AMQ_ARGS --data ${AMQ_DATA_DIR}"
|
|
fi
|
|
if [ -n "$AMQ_QUEUES" ]; then
|
|
AMQ_ARGS="$AMQ_ARGS --queues $(removeWhiteSpace $AMQ_QUEUES)"
|
|
fi
|
|
if [ -n "$AMQ_ADDRESSES" ]; then
|
|
AMQ_ARGS="$AMQ_ARGS --addresses $(removeWhiteSpace $AMQ_ADDRESSES)"
|
|
fi
|
|
if [ -n "$AMQ_ACCEPTORS" ]; then
|
|
AMQ_ARGS="$AMQ_ARGS --no-amqp-acceptor --no-hornetq-acceptor --no-mqtt-acceptor --no-stomp-acceptor"
|
|
else
|
|
if [ -n "$AMQ_TRANSPORTS" ]; then
|
|
if [[ $(removeWhiteSpace ${AMQ_TRANSPORTS}) != *"hornetq"* ]]; then
|
|
AMQ_ARGS="$AMQ_ARGS --no-hornetq-acceptor"
|
|
fi
|
|
if [[ $(removeWhiteSpace ${AMQ_TRANSPORTS}) != *"amqp"* ]]; then
|
|
AMQ_ARGS="$AMQ_ARGS --no-amqp-acceptor"
|
|
fi
|
|
if [[ $(removeWhiteSpace ${AMQ_TRANSPORTS}) != *"mqtt"* ]]; then
|
|
AMQ_ARGS="$AMQ_ARGS --no-mqtt-acceptor"
|
|
fi
|
|
if [[ $(removeWhiteSpace ${AMQ_TRANSPORTS}) != *"stomp"* ]]; then
|
|
AMQ_ARGS="$AMQ_ARGS --no-stomp-acceptor"
|
|
fi
|
|
fi
|
|
fi
|
|
if [ -n "$GLOBAL_MAX_SIZE" ]; then
|
|
AMQ_ARGS="$AMQ_ARGS --global-max-size $(removeWhiteSpace $GLOBAL_MAX_SIZE)"
|
|
fi
|
|
if [ "$AMQ_RESET_CONFIG" = "true" ]; then
|
|
AMQ_ARGS="$AMQ_ARGS --force"
|
|
fi
|
|
if [ "$AMQ_EXTRA_ARGS" ]; then
|
|
AMQ_ARGS="$AMQ_ARGS $AMQ_EXTRA_ARGS"
|
|
fi
|
|
configureNetworking
|
|
configureSSL
|
|
appendJournalType ${instanceDir}
|
|
|
|
# mask sensitive values
|
|
PRINT_ARGS="${AMQ_ARGS/--password $AMQ_PASSWORD/--password XXXXX}"
|
|
PRINT_ARGS="${PRINT_ARGS/--user $AMQ_USER/--user XXXXX}"
|
|
PRINT_ARGS="${PRINT_ARGS/--cluster-user $AMQ_CLUSTER_USER/--cluster-user XXXXX}"
|
|
PRINT_ARGS="${PRINT_ARGS/--cluster-password $AMQ_CLUSTER_PASSWORD/--cluster-password XXXXX}"
|
|
PRINT_ARGS="${PRINT_ARGS/--ssl-key-password $AMQ_KEYSTORE_PASSWORD/--ssl-key-password XXXXX}"
|
|
PRINT_ARGS="${PRINT_ARGS/--ssl-trust-password $AMQ_TRUSTSTORE_PASSWORD/--ssl-trust-password XXXXX}"
|
|
|
|
if [ "$AMQ_CONSOLE_ARGS" ]; then
|
|
AMQ_ARGS="$AMQ_ARGS $AMQ_CONSOLE_ARGS"
|
|
keypat='(.*)(--ssl-key-password).([[:alnum:]]*)(.*)'
|
|
[[ "$AMQ_CONSOLE_ARGS" =~ $keypat ]]
|
|
CONSOLE_ARGS_NO_KEYPASS="${BASH_REMATCH[1]} ${BASH_REMATCH[2]} XXXXX ${BASH_REMATCH[4]}"
|
|
trustpat='(.*)(--ssl-trust-password).([[:alnum:]]*)(.*)'
|
|
[[ "$CONSOLE_ARGS_NO_KEYPASS" =~ $trustpat ]]
|
|
CONSOLE_ARGS_NO_TRUSTPASS="${BASH_REMATCH[1]} ${BASH_REMATCH[2]} XXXXX ${BASH_REMATCH[4]}"
|
|
PRINT_ARGS="${PRINT_ARGS} ${CONSOLE_ARGS_NO_TRUSTPASS}"
|
|
fi
|
|
|
|
|
|
echo "Creating Broker with args $PRINT_ARGS"
|
|
$AMQ_HOME/bin/artemis create ${instanceDir} $AMQ_ARGS --java-options "$JAVA_OPTS"
|
|
|
|
if [ "$AMQ_CLUSTERED" = "true" ]; then
|
|
modifyDiscovery
|
|
configureRedistributionDelay ${instanceDir}
|
|
fi
|
|
$AMQ_HOME/bin/configure_jolokia_access.sh ${instanceDir}/etc/jolokia-access.xml
|
|
if [ "$AMQ_KEYSTORE_TRUSTSTORE_DIR" ]; then
|
|
echo "Updating acceptors for SSL"
|
|
updateAcceptorsForSSL ${instanceDir}
|
|
fi
|
|
updateAcceptorsForPrefixing ${instanceDir}
|
|
appendAcceptorsFromEnv ${instanceDir}
|
|
appendConnectorsFromEnv ${instanceDir}
|
|
configureLogging ${instanceDir}
|
|
configureJAVA_ARGSMemory ${instanceDir}
|
|
configureJolokiaJVMAgent ${instanceDir}
|
|
|
|
if [ "$AMQ_ENABLE_METRICS_PLUGIN" = "true" ]; then
|
|
echo "Enable artemis metrics plugin"
|
|
injectMetricsPlugin ${instanceDir}
|
|
fi
|
|
|
|
$AMQ_HOME/bin/configure_s2i_files.sh ${instanceDir}
|
|
$AMQ_HOME/bin/configure_custom_config.sh ${instanceDir}
|
|
fi
|
|
}
|
|
|
|
function removeWhiteSpace() {
|
|
echo $*|tr -s ''| tr -d [[:space:]]
|
|
}
|
|
|
|
function runServer() {
|
|
|
|
echo "Configuring Broker"
|
|
instanceDir="${HOME}/${AMQ_NAME}"
|
|
|
|
configure $instanceDir
|
|
|
|
if [ "$1" != "nostart" ]; then
|
|
echo "Running Broker in ${instanceDir}"
|
|
checkBeforeRun ${instanceDir}
|
|
exec ${instanceDir}/bin/artemis run
|
|
fi
|
|
}
|
|
|
|
runServer $1
|
|
|