如何在一台 windows 服务器上 运行 多个 asp.net 核心 MQTT 代理?
How to run multiple asp.net core MQTT broker on one windows server?
我通过 asp.net 核心 2.2 实现了一个 MQTT 代理,并希望在 Windows 服务器 2016 上 运行 它。我正在使用 MQTTnet 版本 2.8.5 来实现这个代理。这是我的启动代码:
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton<MyMqttServer>();
services.AddMvc();
var mqttServerOptions = new MqttServerOptionsBuilder()
.WithDefaultEndpointPort(1886)
.Build();
services
.AddHostedMqttServer(mqttServerOptions)
.AddMqttConnectionHandler()
.AddConnections()
.AddMqttTcpServerAdapter();
}
public void Configure(IApplicationBuilder app, MyMqttServer myMqttServer)
{
app.UseDefaultFiles();
app.UseStaticFiles();
app.UseMqttServer(server =>
{
server.Started += async (sender, args) => await myMqttServer.RunAsync();
});
}
这是我在 Program.cs
中的代码
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseKestrel(o =>
{
o.ListenAnyIP(1885, l => l.UseMqtt()); // mqtt pipeline
o.ListenAnyIP(5000); // default http pipeline
})
.UseStartup<Startup>()
.Build();
我有两个不同的 MQTT 代理应用程序,它们具有 MQTT 的这些设置(另一个在启动时设置在端口 1883 和 1884 上)但具有不同的端口。问题是这些 MQTT 代理中只有一个(在 1883、1884 上工作的代理)同时工作,而另一个不工作。我该如何解决?
感谢 MQTTNET 团队的 JanEggers,他帮助我解决了这个问题。问题是我有一个 class myMqttServer,它覆盖了启动和主 class 中的设置。所以我需要删除这些设置并在 myMqttServer class 中进行。您可以在github link.
中查看详细信息
我通过 asp.net 核心 2.2 实现了一个 MQTT 代理,并希望在 Windows 服务器 2016 上 运行 它。我正在使用 MQTTnet 版本 2.8.5 来实现这个代理。这是我的启动代码:
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton<MyMqttServer>();
services.AddMvc();
var mqttServerOptions = new MqttServerOptionsBuilder()
.WithDefaultEndpointPort(1886)
.Build();
services
.AddHostedMqttServer(mqttServerOptions)
.AddMqttConnectionHandler()
.AddConnections()
.AddMqttTcpServerAdapter();
}
public void Configure(IApplicationBuilder app, MyMqttServer myMqttServer)
{
app.UseDefaultFiles();
app.UseStaticFiles();
app.UseMqttServer(server =>
{
server.Started += async (sender, args) => await myMqttServer.RunAsync();
});
}
这是我在 Program.cs
中的代码public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseKestrel(o =>
{
o.ListenAnyIP(1885, l => l.UseMqtt()); // mqtt pipeline
o.ListenAnyIP(5000); // default http pipeline
})
.UseStartup<Startup>()
.Build();
我有两个不同的 MQTT 代理应用程序,它们具有 MQTT 的这些设置(另一个在启动时设置在端口 1883 和 1884 上)但具有不同的端口。问题是这些 MQTT 代理中只有一个(在 1883、1884 上工作的代理)同时工作,而另一个不工作。我该如何解决?
感谢 MQTTNET 团队的 JanEggers,他帮助我解决了这个问题。问题是我有一个 class myMqttServer,它覆盖了启动和主 class 中的设置。所以我需要删除这些设置并在 myMqttServer class 中进行。您可以在github link.
中查看详细信息