使用 C# 启用 RabbitMQ 管理插件
Enable RabbitMQ management plugin using C#
我一直在尝试使用 C# 代码启用 RabbitMQ 管理插件。
我使用以下代码成功地使用 C# 安装了 RabbitMQ 服务器。
RunspaceConfiguration runspaceConfiguration = RunspaceConfiguration.Create();
Runspace runspace = RunspaceFactory.CreateRunspace(runspaceConfiguration);
runspace.Open();
RunspaceInvoke scriptInvoker = new RunspaceInvoke(runspace);
Pipeline pipeline = runspace.CreatePipeline();
Command myCommand = new Command("Start-Process");
CommandParameter testParam = new CommandParameter("FilePath", @"C:\Users\saadp\Desktop\Dependencies\rabbitmq-server-3.8.3.exe");
CommandParameter testParam2 = new CommandParameter("ArgumentList", new string[] { "/S" });
CommandParameter testParam3 = new CommandParameter("Wait");
myCommand.Parameters.Add(testParam);
myCommand.Parameters.Add(testParam2);
myCommand.Parameters.Add(testParam3);
pipeline.Commands.Add(myCommand);
var results = pipeline.Invoke();
但是,当我尝试使用以下 CommandParameters 启用 RabbitMQ 管理插件时,它没有任何影响。实际发生的是在执行此代码后,新的命令提示符打开和关闭的时间很短。
这是我试过的代码。
CommandParameter testParam = new CommandParameter("FilePath", @"""C:\Program Files\RabbitMQ Server\rabbitmq_server-3.8.3\sbin\rabbitmq-plugins.bat""");
CommandParameter testParam2 = new CommandParameter("ArgumentList", new string[] { "'enable rabbitmq_management'" });
CommandParameter testParam3 = new CommandParameter("Wait");
试试这个:
var startInfo =
new ProcessStartInfo
{
FileName = @"C:\Windows\System32\cmd.exe",
Arguments = "/c rabbitmq-plugins enable rabbitmq_management",
WorkingDirectory = @"C:\Program Files\RabbitMQ Server\rabbitmq_server-3.7.11\sbin",
WindowStyle = ProcessWindowStyle.Maximized
};
Process.Start(startInfo)?.WaitForExit();
Process.Start("net", "stop RabbitMQ")?.WaitForExit();
Process.Start("net", "start RabbitMQ")?.WaitForExit();
我按照这段代码完成了这项工作。
private static string RunScript(string scriptText)
{
// create Powershell runspace
Runspace runspace = RunspaceFactory.CreateRunspace();
// open it
runspace.Open();
// create a pipeline and feed it the script text
Pipeline pipeline = runspace.CreatePipeline();
pipeline.Commands.AddScript(scriptText);
// add an extra command to transform the script
// output objects into nicely formatted strings
// remove this line to get the actual objects
// that the script returns. For example, the script
// "Get-Process" returns a collection
// of System.Diagnostics.Process instances.
pipeline.Commands.Add("Out-String");
// execute the script
pipeline.Invoke();
// close the runspace
runspace.Close();
}
我一直在尝试使用 C# 代码启用 RabbitMQ 管理插件。
我使用以下代码成功地使用 C# 安装了 RabbitMQ 服务器。
RunspaceConfiguration runspaceConfiguration = RunspaceConfiguration.Create();
Runspace runspace = RunspaceFactory.CreateRunspace(runspaceConfiguration);
runspace.Open();
RunspaceInvoke scriptInvoker = new RunspaceInvoke(runspace);
Pipeline pipeline = runspace.CreatePipeline();
Command myCommand = new Command("Start-Process");
CommandParameter testParam = new CommandParameter("FilePath", @"C:\Users\saadp\Desktop\Dependencies\rabbitmq-server-3.8.3.exe");
CommandParameter testParam2 = new CommandParameter("ArgumentList", new string[] { "/S" });
CommandParameter testParam3 = new CommandParameter("Wait");
myCommand.Parameters.Add(testParam);
myCommand.Parameters.Add(testParam2);
myCommand.Parameters.Add(testParam3);
pipeline.Commands.Add(myCommand);
var results = pipeline.Invoke();
但是,当我尝试使用以下 CommandParameters 启用 RabbitMQ 管理插件时,它没有任何影响。实际发生的是在执行此代码后,新的命令提示符打开和关闭的时间很短。
这是我试过的代码。
CommandParameter testParam = new CommandParameter("FilePath", @"""C:\Program Files\RabbitMQ Server\rabbitmq_server-3.8.3\sbin\rabbitmq-plugins.bat""");
CommandParameter testParam2 = new CommandParameter("ArgumentList", new string[] { "'enable rabbitmq_management'" });
CommandParameter testParam3 = new CommandParameter("Wait");
试试这个:
var startInfo =
new ProcessStartInfo
{
FileName = @"C:\Windows\System32\cmd.exe",
Arguments = "/c rabbitmq-plugins enable rabbitmq_management",
WorkingDirectory = @"C:\Program Files\RabbitMQ Server\rabbitmq_server-3.7.11\sbin",
WindowStyle = ProcessWindowStyle.Maximized
};
Process.Start(startInfo)?.WaitForExit();
Process.Start("net", "stop RabbitMQ")?.WaitForExit();
Process.Start("net", "start RabbitMQ")?.WaitForExit();
我按照这段代码完成了这项工作。
private static string RunScript(string scriptText)
{
// create Powershell runspace
Runspace runspace = RunspaceFactory.CreateRunspace();
// open it
runspace.Open();
// create a pipeline and feed it the script text
Pipeline pipeline = runspace.CreatePipeline();
pipeline.Commands.AddScript(scriptText);
// add an extra command to transform the script
// output objects into nicely formatted strings
// remove this line to get the actual objects
// that the script returns. For example, the script
// "Get-Process" returns a collection
// of System.Diagnostics.Process instances.
pipeline.Commands.Add("Out-String");
// execute the script
pipeline.Invoke();
// close the runspace
runspace.Close();
}