c# - 如何在一台 Windows 服务器上运行多个 asp.net core MQTT 代理?
问题描述
我通过 asp.net core 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,他帮助我解决了这个问题。问题是我有一个 myMqttServer 类,它覆盖了启动和主类中的设置。所以我需要删除这些设置并在 myMqttServer 类中进行。您可以在此 github 链接中查看详细信息。
推荐阅读
- swift - 我不能在 ios watch 应用中使用 TensorFlowLite 吗?
- sql - SQL:在 ALTER TABLE 中使用动态默认值
- react-native - 抽屉导航器在注销后保留状态。如何清除它的状态
- android - Gridview Flutter 中的 BoxDecoration 溢出
- java - 如何显示桌面通知?
- spring-boot - 在 Spring Boot 中描述 String swagger 响应模式
- php - 将文件拆分为多个字节范围
- javascript - 为什么未显示 vuetify 日历中的事件?
- javascript - 创建一个将更新状态的 axios 调用,然后执行另一个
- java - 如何在两个日期之间制作 TableRowShorter