Skip to content

Instantly share code, notes, and snippets.

@gpduck
Created July 13, 2015 20:33
Show Gist options
  • Save gpduck/74593bc39752d3ec3c98 to your computer and use it in GitHub Desktop.
Save gpduck/74593bc39752d3ec3c98 to your computer and use it in GitHub Desktop.
Startup a temporary RabbitMQ Server
$TempPath = [IO.Path]::GetTempPath()
$SBin = "C:\Program Files (x86)\RabbitMQ Server\rabbitmq_server-3.5.3.60710\sbin"
$NodeNameBase = [IO.Path]::GetFileNameWithoutExtension([IO.Path]::GetRandomFileName())
$NodeName = "$NodeNameBase@$Env:COMPUTERNAME"
$RabbitBase = Join-Path $TempPath $NodeNameBase
$ErlangHome = "c:\Program Files\erl7.0"
$RabbitPort = 5672
$MgmtPort = 15672
[Environment]::SetEnvironmentVariable("RABBITMQ_BASE", $RabbitBase, "Process")
[Environment]::SetEnvironmentVariable("ERLANG_HOME", $ErlangHome, "Process")
[Environment]::SetEnvironmentVariable("RABBITMQ_NODE_PORT", $RabbitPort, "Process")
[Environment]::SetEnvironmentVariable("RABBITMQ_NODENAME", $NodeName, "Process")
mkdir $RabbitBase > $null
pushd $SBin
try {
&$SBin\rabbitmq-plugins.bat -n $NodeName enable --offline rabbitmq_management
Set-Content (Join-Path $RabbitBase rabbitmq.config) -Value @"
[{rabbitmq_management,
[{listener, [{port, $MgmtPort}]}]
}].
"@
Write-Host @"
### Starting RabbitMQ Server with the following environment ###
`$NodeNameBase = "$NodeNameBase"
`$NodeName = "$NodeNameBase@$Env:Computername"
`$RabbitPort = $RabbitPort
`$MgmtPort = $MgmtPort
`$SBin = "$SBin"
`$RabbitBase = "$RabbitBase"
`$ErlangHome = "$ErlangHome"
[Environment]::SetEnvironmentVariable("RABBITMQ_BASE", `$RabbitBase, "Process")
[Environment]::SetEnvironmentVariable("ERLANG_HOME", `$ErlangHome, "Process")
[Environment]::SetEnvironmentVariable("RABBITMQ_NODE_PORT", `$RabbitPort, "Process")
[Environment]::SetEnvironmentVariable("RABBITMQ_NODENAME", `$NodeName, "Process")
### Stop command (with environment above)
&`$Sbin\rabbitmqctl.bat stop
###
"@
$RabbitJob = Start-Job -Name rabbit_$NodeNameBase -ScriptBlock {
[Environment]::SetEnvironmentVariable("RABBITMQ_BASE", $Using:RabbitBase, "Process")
[Environment]::SetEnvironmentVariable("ERLANG_HOME", $Using:ErlangHome, "Process")
[Environment]::SetEnvironmentVariable("RABBITMQ_NODE_PORT", $Using:RabbitPort, "Process")
[Environment]::SetEnvironmentVariable("RABBITMQ_NODENAME", $Using:NodeName, "Process")
&$Using:SBin\rabbitmq-server.bat -n $NodeName start
if(Test-Path $Using:RabbitBase) {
del $Using:RabbitBase -Recurse
}
}
Start-Sleep -Seconds 10
&$SBin\rabbitmqctl.bat add_user administrator "AdminPassword123!"
&$SBin\rabbitmqctl.bat set_permissions administrator ".*" ".*" ".*"
&$SBin\rabbitmqctl.bat set_user_tags administrator "administrator"
#&$SBin\rabbitmqctl.bat delete_user guest
&$SBin\rabbitmqctl.bat change_password guest "guest"
Write-Host "Waiting for RabbitMQ server to stop"
Wait-Job $RabbitJob
} finally {
popd
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment