NetCore 注册Channel消费者,实现消息队列,替代RabbitMQ
十年河东,十年河西,莫欺少年穷
学无止境,精益求精
创建相关类
using Newtonsoft.Json; using swapCommon.Enums; using swapModels.TcpModels; using swapService.Service.Power; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Threading.Channels; using System.Threading.Tasks; namespace swapService.Service.business { public class ChannelConsumeSvc { static Channel<string> channel = Channel.CreateBounded<string>(100); // 创建一个有界的通道,最大容量10条待处理消息(当通道满时,生产 public static async Task Producer(string msg) { await channel.Writer.WriteAsync(msg); // 异步写入通道 } static async Task Consumer() { while (await channel.Reader.WaitToReadAsync()) { await foreach (var message in channel.Reader.ReadAllAsync()) // 异步读取所有消息 { //Console.WriteLine($"Consumed: {message}"); var dto = JsonConvert.DeserializeObject<RdsPowerOpenDoorDtls>(message); //你的业务逻辑 } } } public static async Task StartConsumer() { //启动消费者任务 await Consumer(); } } }
2、在staartUp.cs中注册消费者,完成侦听
Task.Run(async () => {await ChannelConsumeSvc.StartConsumer(); });

3、生产消息:
var rabbit = new RdsPowerOpenDoorDtls() { DEVICE = order.PwDeviceno, BtSn = order.PowerSn, Port = order.Rek2.Value, orderId = order.Uid }; await ChannelConsumeSvc.Producer(JsonConvert.SerializeObject(rabbit));
over

浙公网安备 33010602011771号