|
|
|
|
////using Confluent.Kafka;
|
|
|
|
|
//using Newtonsoft.Json;
|
|
|
|
|
//using System;
|
|
|
|
|
//using System.Collections.Generic;
|
|
|
|
|
//using System.Net;
|
|
|
|
|
//using System.Reflection;
|
|
|
|
|
//using System.Text;
|
|
|
|
|
//using System.Text.RegularExpressions;
|
|
|
|
|
|
|
|
|
|
//namespace VOL.Core.KafkaManager
|
|
|
|
|
//{
|
|
|
|
|
// /// <summary>
|
|
|
|
|
// /// 辅助类
|
|
|
|
|
// /// </summary>
|
|
|
|
|
// public class KafkaHelper
|
|
|
|
|
// {
|
|
|
|
|
// /// <summary>
|
|
|
|
|
// /// 获取当前应用程式名称(仅控制台应用程序和Windows应用程序可用)
|
|
|
|
|
// /// </summary>
|
|
|
|
|
// /// <returns></returns>
|
|
|
|
|
// public static string GetApplicationName()
|
|
|
|
|
// {
|
|
|
|
|
// try
|
|
|
|
|
// {
|
|
|
|
|
// return Assembly.GetEntryAssembly().GetName().Name;
|
|
|
|
|
// }
|
|
|
|
|
// catch
|
|
|
|
|
// {
|
|
|
|
|
// return "Kafka_Test";
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// /// <summary>
|
|
|
|
|
// /// 获取服务器名称
|
|
|
|
|
// /// </summary>
|
|
|
|
|
// /// <returns></returns>
|
|
|
|
|
// public static string GetServerName()
|
|
|
|
|
// {
|
|
|
|
|
// return Dns.GetHostName();
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// /// <summary>
|
|
|
|
|
// /// 获取服务器IP
|
|
|
|
|
// /// </summary>
|
|
|
|
|
// /// <returns></returns>
|
|
|
|
|
// public static string GetServerIp()
|
|
|
|
|
// {
|
|
|
|
|
// IPHostEntry ips = Dns.GetHostEntry(Dns.GetHostName());
|
|
|
|
|
// foreach (var ip in ips.AddressList)
|
|
|
|
|
// {
|
|
|
|
|
// if (Regex.IsMatch(ip.ToString(), @"^10\.((25[0-5]|2[0-4]\d|1\d{2}|\d?\d)\.){2}(25[0-5]|2[0-4]\d|1\d{2}|\d?\d)$"))
|
|
|
|
|
// {
|
|
|
|
|
// return ip.ToString();
|
|
|
|
|
// };
|
|
|
|
|
// }
|
|
|
|
|
// return "127.0.0.1";
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// /// <summary>
|
|
|
|
|
// /// 将c# DateTime时间格式转换为Unix时间戳格式(毫秒级)
|
|
|
|
|
// /// </summary>
|
|
|
|
|
// /// <returns>long</returns>
|
|
|
|
|
// public static long GetTimeStamp()
|
|
|
|
|
// {
|
|
|
|
|
// DateTime time = DateTime.Now;
|
|
|
|
|
// long t = (time.Ticks - 621356256000000000) / 10000;
|
|
|
|
|
// return t;
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// #region 实现消息序列化和反序列化
|
|
|
|
|
// public class KafkaConverter<T> : ISerializer<T>
|
|
|
|
|
// {
|
|
|
|
|
// /// <summary>
|
|
|
|
|
// /// 序列化数据成字节
|
|
|
|
|
// /// </summary>
|
|
|
|
|
// /// <param name="data"></param>
|
|
|
|
|
// /// <param name="context"></param>
|
|
|
|
|
// /// <returns></returns>
|
|
|
|
|
// public byte[] Serialize(T data, SerializationContext context)
|
|
|
|
|
// {
|
|
|
|
|
// var json = JsonConvert.SerializeObject(data);
|
|
|
|
|
// return Encoding.UTF8.GetBytes(json);
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// public class KafkaDConverter<T> : IDeserializer<T>
|
|
|
|
|
// {
|
|
|
|
|
// /// <summary>
|
|
|
|
|
// /// 反序列化字节数据成实体数据
|
|
|
|
|
// /// </summary>
|
|
|
|
|
// /// <param name="data"></param>
|
|
|
|
|
// /// <param name="isNull"></param>
|
|
|
|
|
// /// <param name="context"></param>
|
|
|
|
|
// /// <returns></returns>
|
|
|
|
|
// public T Deserialize(ReadOnlySpan<byte> data, bool isNull, SerializationContext context)
|
|
|
|
|
// {
|
|
|
|
|
// if (isNull) return default(T);
|
|
|
|
|
|
|
|
|
|
// var json = Encoding.UTF8.GetString(data.ToArray());
|
|
|
|
|
// try
|
|
|
|
|
// {
|
|
|
|
|
// return JsonConvert.DeserializeObject<T>(json);
|
|
|
|
|
// }
|
|
|
|
|
// catch
|
|
|
|
|
// {
|
|
|
|
|
// return default(T);
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// #endregion
|
|
|
|
|
|
|
|
|
|
// #region 日志类
|
|
|
|
|
// /// <summary>
|
|
|
|
|
// /// 默认日志类 可自行构造使用
|
|
|
|
|
// /// </summary>
|
|
|
|
|
// public class KafkaLogModel
|
|
|
|
|
// {
|
|
|
|
|
// /// <summary>
|
|
|
|
|
// /// 构造默认日志类(设置默认值 ServerIp,ServerName,TimeStamp,ApplicationVersion)
|
|
|
|
|
// /// </summary>
|
|
|
|
|
// public KafkaLogModel()
|
|
|
|
|
// {
|
|
|
|
|
// ServerIp = KafkaHelper.GetServerIp();
|
|
|
|
|
// ServerName = KafkaHelper.GetServerName();
|
|
|
|
|
// TimeStamp = DateTime.Now;
|
|
|
|
|
// ApplicationName = KafkaHelper.GetApplicationName();
|
|
|
|
|
// ApplicationVersion = "V1.0.0";
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// /// <summary>
|
|
|
|
|
// /// 程式名称(默认获取当前程式名称,Web应用 默认为 ISD_Kafka)
|
|
|
|
|
// /// </summary>
|
|
|
|
|
// public string ApplicationName { get; set; }
|
|
|
|
|
|
|
|
|
|
// /// <summary>
|
|
|
|
|
// /// 程式版本(默认为V1.0.0)
|
|
|
|
|
// /// </summary>
|
|
|
|
|
// public string ApplicationVersion { get; set; }
|
|
|
|
|
|
|
|
|
|
// /// <summary>
|
|
|
|
|
// /// 发生时间(默认为当前时间)
|
|
|
|
|
// /// </summary>
|
|
|
|
|
// public DateTime TimeStamp { get; set; }
|
|
|
|
|
|
|
|
|
|
// /// <summary>
|
|
|
|
|
// /// 开始时间
|
|
|
|
|
// /// </summary>
|
|
|
|
|
// public DateTime BeginDate { get; set; }
|
|
|
|
|
|
|
|
|
|
// /// <summary>
|
|
|
|
|
// /// 结束时间
|
|
|
|
|
// /// </summary>
|
|
|
|
|
// public DateTime EndDate { get; set; }
|
|
|
|
|
|
|
|
|
|
// /// <summary>
|
|
|
|
|
// /// 服务器IP(默认抓取当前服务器IP)
|
|
|
|
|
// /// </summary>
|
|
|
|
|
// public string ServerIp { get; set; }
|
|
|
|
|
|
|
|
|
|
// /// <summary>
|
|
|
|
|
// /// 服务器名称(默认抓取当前服务器名称)
|
|
|
|
|
// /// </summary>
|
|
|
|
|
// public string ServerName { get; set; }
|
|
|
|
|
|
|
|
|
|
// /// <summary>
|
|
|
|
|
// /// 客户端IP
|
|
|
|
|
// /// </summary>
|
|
|
|
|
// public string ClientIp { get; set; }
|
|
|
|
|
|
|
|
|
|
// /// <summary>
|
|
|
|
|
// /// 模块(页面路径)
|
|
|
|
|
// /// </summary>
|
|
|
|
|
// public string Module { get; set; }
|
|
|
|
|
|
|
|
|
|
// /// <summary>
|
|
|
|
|
// /// 操作人
|
|
|
|
|
// /// </summary>
|
|
|
|
|
// public string Operator { get; set; }
|
|
|
|
|
|
|
|
|
|
// /// <summary>
|
|
|
|
|
// /// 操作类型 如:Query,Add,Update,Delete,Export等,可自定义
|
|
|
|
|
// /// </summary>
|
|
|
|
|
// public string OperationType { get; set; }
|
|
|
|
|
|
|
|
|
|
// /// <summary>
|
|
|
|
|
// /// 操作状态 如:http请求使用200,404,503等,其他操作 1:成功,0失败等 可自定义
|
|
|
|
|
// /// </summary>
|
|
|
|
|
// public string Status { get; set; }
|
|
|
|
|
|
|
|
|
|
// /// <summary>
|
|
|
|
|
// /// 其他信息
|
|
|
|
|
// /// </summary>
|
|
|
|
|
// public string Message { get; set; }
|
|
|
|
|
// }
|
|
|
|
|
// #endregion
|
|
|
|
|
//}
|