static void Main(string[] args) { try { //// 啟動redis發布訂閱中樞 RedisFactory.Start(NoSqlService.RedisConnections, NoSqlService.RedisAffixKey, NoSqlService.RedisDataBase); ////訂閱關注Topics var consumer = new RedisConsumer(ConfigHelper.SubscribTopics, new PubSubDispatcher <RedisEventStream>(AutofacConfig.Container)); consumer.Register(); //// 發布事件 RedisProducer.Publish("A", new AEvent() { Message = $"{nameof(AEvent)}:{DateTime.Now.ToString("yyyy/MM/dd hh:mm:ss")}" }); RedisProducer.Publish("B", new AEvent() { Message = $"{nameof(BEvent)}:{DateTime.Now.ToString("yyyy/MM/dd hh:mm:ss")}" }); RedisProducer.Publish("C", new AEvent() { Message = $"{nameof(CEvent)}:{DateTime.Now.ToString("yyyy/MM/dd hh:mm:ss")}" }); } catch (Exception ex) { Console.WriteLine(ex.Message); } Console.Read(); }
static void Main(string[] args) { var channelName = "CartPreviewCreated"; var producer = new RedisProducer(); var eventRaiserTasks = new List <Task>(); var consumer = new RedisConsumer(); var queue = consumer.Consume(channelName); var messageCount = 0; queue.OnMessage(x => { ClearCurrentConsoleLine(); var content = $"<{x.Channel}>: {x.Message} delivered at {DateTime.Now.ToString("dd.MM.yyyy-HH:mm:ss")}>"; Console.WriteLine(content); Console.WriteLine($"{++messageCount} messages delivered."); Console.SetCursorPosition(0, Console.CursorTop - 1); }); for (int i = 0; i < 1000; i++) { eventRaiserTasks.Add(producer.ProduceAsync(channelName, $"ThrowTime:{DateTime.Now.ToString("dd.MM.yyyy-HH:mm:ss")} at order {i + 1}. with {Guid.NewGuid()}.")); } Task.WhenAll(); Console.ReadKey(); }
/// <summary> /// GetRedisProducer /// </summary> /// <returns></returns> public RedisProducer GetRedisProducer() { if (_redisProducer == null) { _redisProducer = new RedisProducer(_cnn); } return(_redisProducer); }
internal void SendToMessageQueue(RedisValue value) { if (_publisher == null) { var redisConnection = (RedisConnection)Container.Connection; _publisher = new RedisProducer(redisConnection); } _publisher.PublishToFront(MessageQueue.Name, value); }
/// <summary> /// 消息发布方法 /// </summary> /// <typeparam name="T">参数类型占位符</typeparam> /// <param name="model">参数:消息内容</param> /// <param name="channel">发布频道</param> public static void PushMessage <T>(T model, string channel) { if (redisProducer == null) { redisProducer = new RedisProducer(); } redisProducer.Channel = channel; redisProducer.Publish <T>(model); }
internal void SendToDeadLetterQueue(RedisValue value) { if (_publisher == null) { var redisConnection = (RedisConnection)Container.Connection; _publisher = new RedisProducer(redisConnection); } Log.Warn("Sending message " + value + " to dead letter queue " + DeadLetterQueue.Name); _publisher.Publish(DeadLetterQueue.Name, value); }
public void Init() { var redisConnection = (RedisConnection)Container.Connection; _redis = redisConnection.Multiplexer; _publisher = new RedisProducer(redisConnection, MessageQueue); //need to be able to add in the instance id here... if (Id == null) { Id = "NA"; } var processingQueueName = $"{MessageQueue.Name}:ProcessingQueue:{Id}_{Environment.MachineName}_{DateTime.Now.ToString("yyyyMMdd_HHmmss")}"; ProcessingQueue = new RedisQueue(processingQueueName, 0); }
private void btnSend_Click(object sender, System.EventArgs e) { using (var redLock = RedisLockHelper.GrabLock(1)) // 有 async 的版本 { // 確定取得 lock 所有權 if (redLock.IsAcquired) { // 執行需要獨佔資源的核心工作 RedisProducer.Publish("RedisSample1", new PressureTestContentEvent { Content = "RedisSample1", CreateDateTime = DateTime.Now }); } } RedisProducer.Publish("RedisSample2", new PressureTestContentEvent { Content = "RedisSample2", CreateDateTime = DateTime.Now }); RedisProducer.Publish("RedisSample3", new PressureTestContentEvent { Content = "RedisSample3", CreateDateTime = DateTime.Now }); }
/// <summary> /// 构造函数获取生产者对象 /// </summary> public MessagePush() { redisProducer = new RedisProducer(); }