CORE 5 Web Api和客户端MQTT



是否可以创建一个.core webapi项目和一个mqtt客户端?例如,在startup.cs中创建一个单独的线程,您可以在其中实例化mqtt客户端

我尝试添加一个Singleton服务来在startup.cs中实例化mqtt客户端,它运行良好,程序收到了主题上发布的消息。第一个问题,在此位置创建此服务是否正确?

问题是当我尝试使用包控制台工具添加数据库的迁移或更新时。该命令未完成排序,控制台已锁定。

public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
services.AddDbContext<ApplicationDbContext>(options => options.UseSqlServer("name=ConnectionStrings:DefaultConnection"));
services.AddSingleton<MyMqtt>(new MyMqtt());
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new OpenApiInfo { Title = "CoWorkOfficeWebApi", Version = "v1" });
});
}

public class MyMqtt
{
MqttClient client;
public MyMqtt()
{
// create client instance 
client = new MqttClient("127.0.0.1");
// register to message received 
client.MqttMsgPublishReceived += client_MqttMsgPublishReceived;
string clientId = Guid.NewGuid().ToString();
client.Connect(clientId);
// subscribe to the topic "/home/temperature" with QoS 2 
client.Subscribe(new string[] { "/home/temperature" }, new byte[] { MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE });
}

static void client_MqttMsgPublishReceived(object sender, MqttMsgPublishEventArgs e)
{
string msg = Encoding.UTF8.GetString(e.Message);
Console.WriteLine($"Topic: {e.Topic}, Message: {msg}");
}
}

最新更新