Skip to content

Instantly share code, notes, and snippets.

@messense
Last active June 22, 2021 15:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save messense/dc6132214cdea0a1a9c22a4da7d6349a to your computer and use it in GitHub Desktop.
Save messense/dc6132214cdea0a1a9c22a4da7d6349a to your computer and use it in GitHub Desktop.
Homebrew RocketMQ formulae

Homebrew RocketMQ formulae

brew install https://gist.github.com/messense/dc6132214cdea0a1a9c22a4da7d6349a/raw/b1f7e9c6bbeb533f98e09e685f72d228fba5bab3/rocketmq.rb
class Rocketmq < Formula
desc "Distributed messaging and streaming platform"
homepage "https://rocketmq.apache.org"
url "https://www.apache.org/dyn/closer.lua?path=rocketmq/4.9.0/rocketmq-all-4.9.0-bin-release.zip"
mirror "https://archive.apache.org/dist/rocketmq/4.9.0/rocketmq-all-4.9.0-bin-release.zip"
sha256 "d13416f9e80f5d4414300fbf84518a22476e7e298d19c6b8d21c7e99c4599065"
license "Apache-2.0"
depends_on "openjdk"
resource "netty-all" do
url "https://search.maven.org/remotecontent?filepath=io/netty/netty-all/4.1.65.Final/netty-all-4.1.65.Final.jar"
sha256 "e6cdae2b23e410b35128dac651b954aedd583bc10959a1e702c7dba7ac850d0e"
end
def install
inreplace "bin/runserver.sh" do |s|
s.gsub! "export CLASSPATH=.:${BASE_DIR}/conf:${CLASSPATH}", "export CLASSPATH=.:${BASE_DIR}/lib/*:${BASE_DIR}/conf:${CLASSPATH}"
s.gsub! "JAVA_OPT=\"${JAVA_OPT} -Djava.ext.dirs", "#JAVA_OPT=\"${JAVA_OPT} -Djava.ext.dirs"
s.gsub! "choose_gc_log_directory\n", ""
s.gsub! "choose_gc_options\n", "\n"
end
inreplace "bin/runbroker.sh" do |s|
s.gsub! "export CLASSPATH=.:${BASE_DIR}/conf:${CLASSPATH}", "export CLASSPATH=.:${BASE_DIR}/lib/*:${BASE_DIR}/conf:${CLASSPATH}"
s.gsub! "JAVA_OPT=\"${JAVA_OPT} -Djava.ext.dirs", "#JAVA_OPT=\"${JAVA_OPT} -Djava.ext.dirs"
s.gsub! "JAVA_OPT=\"${JAVA_OPT} -verbose:gc -Xloggc:${GC_LOG_DIR}/rmq_broker_gc_%p_%t.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCApplicationStoppedTime -XX:+PrintAdaptiveSizePolicy\"", ""
s.gsub! "JAVA_OPT=\"${JAVA_OPT} -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=30m\"", ""
s.gsub! "JAVA_OPT=\"${JAVA_OPT} -XX:-UseLargePages -XX:-UseBiasedLocking\"", "JAVA_OPT=\"${JAVA_OPT} -XX:-UseLargePages\""
s.gsub! "choose_gc_log_directory\n", "\n"
end
inreplace "bin/tools.sh" do |s|
s.gsub! "export CLASSPATH=.:${BASE_DIR}/conf:${CLASSPATH}", "export CLASSPATH=.:${BASE_DIR}/lib/*:${BASE_DIR}/conf:${CLASSPATH}"
s.gsub! "JAVA_OPT=\"${JAVA_OPT} -Djava.ext.dirs", "#JAVA_OPT=\"${JAVA_OPT} -Djava.ext.dirs"
end
# netty-all-4.0.42.Final.jar doesn't work on arm64 macOS
rm_rf "lib/netty-all-4.0.42.Final.jar"
libexec.install "lib"
# install netty-all-4.1.65.Final.jar which works on arm64 macOS
resource("netty-all").stage { cp "netty-all-4.1.65.Final.jar", libexec/"lib" }
# remove non-executable
rm_rf "bin/dledger"
# remove Windows scripts
rm_r Dir.glob('bin/*.cmd')
prefix.install "bin"
bin.env_script_all_files(libexec/"bin", Language::Java.java_home_env)
mv "conf", "rocketmq"
etc.install "rocketmq"
libexec.install_symlink(etc/"rocketmq" => "conf")
# create directory for rocketmq stdout+stderr output logs when run by launchd
(var + "log/rocketmq").mkpath
end
plist_options manual: "mqnamesrv & mqbroker -n localhost:9876"
test do
output = shell_output("#{bin}/mqnamesrv -h 2>&1")
puts output
assert_match "usage: mqnamesrv", output
output = shell_output("#{bin}/mqbroker -h 2>&1")
assert_match "usage: mqbroker", output
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment