c# MES 对接之二(MQTT、Restful、RabbitMQ)

news/2024/7/7 20:22:11

//以下是C# MES对接的示例代码:

//1. MQTT

//使用M2Mqtt库实现C#与MQTT的通信,示例代码如下:

//csharp
using System;
using System.Text;
using uPLibrary.Networking.M2Mqtt;
using uPLibrary.Networking.M2Mqtt.Messages;

class Program
{
    static void Main(string[] args)
    {
        // 创建MQTT客户端实例
        MqttClient client = new MqttClient("localhost");

        // 注册连接事件
        client.MqttMsgConnected += Client_MqttMsgConnected;

        // 注册消息接收事件
        client.MqttMsgPublishReceived += Client_MqttMsgPublishReceived;

        // 连接到MQTT服务器
        client.Connect(Guid.NewGuid().ToString());

        // 订阅主题
        client.Subscribe(new string[]  { "test" },

                                  new byte[] { MqttMsgBase.QOS_LEVEL_AT_LEAST_ONCE  }

                                 );

        // 发布消息
        client.Publish("test", Encoding.UTF8.GetBytes("Hello, MQTT!"));
    }

    private static void Client_MqttMsgConnected(object sender, MqttMsgConnectEventArgs e)
    {
        Console.WriteLine("Connected to MQTT broker.");
    }

    private static void Client_MqttMsgPublishReceived(object sender,

                                                                                     MqttMsgPublishEventArgs e)
    {
        Console.WriteLine("Received message: " + Encoding.UTF8.GetString(e.Message));
    }
}
//

//2. Restful

//使用HttpClient库实现C#与Restful的通信,示例代码如下:

//csharp
using System;
using System.Net.Http;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        // 创建HttpClient实例
        HttpClient client = new HttpClient();

        // 发送GET请求
        HttpResponseMessage response = await client.GetAsync("http://localhost:8080/api/test");

        // 获取响应内容
        string content = await response.Content.ReadAsStringAsync();

        // 输出响应内容
        Console.WriteLine(content);
    }
}
//

//3. RabbitMQ

//使用RabbitMQ.Client库实现C#与RabbitMQ的通信,示例代码如下:

//csharp
using System;
using System.Text;
using RabbitMQ.Client;
using RabbitMQ.Client.Events;

class Program
{
    static void Main(string[] args)
    {
        // 创建RabbitMQ连接工厂
        ConnectionFactory factory = new ConnectionFactory()
        {
            HostName = "localhost",
            UserName = "guest",
            Password = "guest"
        };

        // 创建RabbitMQ连接
        using (IConnection connection = factory.CreateConnection())
        {
            // 创建RabbitMQ通道
            using (IModel channel = connection.CreateModel())
            {
                // 定义队列
                channel.QueueDeclare(queue: "test",
                                     durable: false,
                                     exclusive: false,
                                     autoDelete: false,
                                     arguments: null);

                // 注册消息接收事件
                EventingBasicConsumer consumer = new EventingBasicConsumer(channel);
                consumer.Received += (model, ea) =>
                {
                    byte[] body = ea.Body.ToArray();
                    string message = Encoding.UTF8.GetString(body);
                    Console.WriteLine("Received message: " + message);
                };
                channel.BasicConsume(queue: "test",
                                     autoAck: true,
                                     consumer: consumer);

                // 发布消息
                string message = "Hello, RabbitMQ!";
                byte[] body = Encoding.UTF8.GetBytes(message);
                channel.BasicPublish(exchange: "",
                                     routingKey: "test",
                                     basicProperties: null,
                                     body: body);
            }
        }
    }
}
//


http://lihuaxi.xjx100.cn/news/1237383.html

相关文章

【实战】minigpt4的体验和微调

MiniGPT-4 https://github.com/vision-cair/minigpt-4 1 环境配置 1.1 安装环境 git lfs install //如果报错 :git: lfs is not a git command. See git --help. //尝试使用: sudo apt-get install git-lfs git lfs install1.2 准备Vicuna权重 &…

初识Notes Domino 14 Drop1

大家好,才是真的好。 周末花了点时间,安装了一下Notes Domino 14 Drop1版本。考虑到大多数人的习惯,没采用Docker或K8s方式来部署,也没采用一键配置功能,依旧通过传统方式一步一步进行安装和配置,这样大家…

从微观世界的RST包文视角助力企业网络应用故障排查和优化

1. 前言 随着互联网的普及和发展,各行业的业务和应用越来越依赖于网络。然而,网络环境的不稳定性和复杂性使得出现各种异常现象的概率变得更高了。这些异常现象会导致业务无法正常运行,给用户带来困扰,甚至影响企业的形象和利益。…

Vue3-04-生命周期

Vue 的生命周期描述组件从创建到销毁的全过程。Vue3 和 Vue2 的生命周期钩子非常像,我们仍然可以在相同的场景下使用相同的钩子函数。 Vue3 在设计时对先前的版本进行了向下兼容,如果你的项目还在使用选项式 API 进行构建,那么不需要修改生命…

深入理解深拷贝与浅拷贝

初识深拷贝与浅拷贝 深拷贝与浅拷贝都是Javascript中实现拷贝的一个方式,或许说拷贝有些同学可能不是很理解,其实我们也可以叫他们深复制与浅复制。那么接下来,让我们先了解一下什么是浅拷贝,什么是深拷贝。 浅拷贝 浅拷贝指的…

Kotlin Lambda表达式和匿名函数的组合简直太强了

Kotlin Lambda表达式和匿名函数的组合简直太强了 简介 首先,在 Kotlin 中,函数是“第一公民”(First Class Citizen)。因此,它们可以被分配为变量的值,作为其他函数的参数传递或者函数的返回值。同样&…

DataOps是现代数据堆栈的未来吗?

DevOps 席卷软件工程世界之前,一旦应用程序启动并运行,开发人员就会一头雾水。 工程师不是第一个知道何时发生中断,而是只会发现客户或利益相关者何时抱怨“网站滞后”或 503 页面过多。 不幸的是,这导致了同样的错误反复出现&a…

Definition of regularity in PDE theory

Regularity is one of the vague yet very useful terms to talk about a vast variety of results in a uniform way. Other examples of such words include “dynamics” in dynamical systems (I have never seen a real definition of this term but everyone uses it, an…