コード例 #1
0
ファイル: Program.cs プロジェクト: zongu/RedisPubSub
        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();
        }
コード例 #2
0
        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();
        }
コード例 #3
0
ファイル: RedisClient.cs プロジェクト: zouhunter/SAEA
 /// <summary>
 /// GetRedisProducer
 /// </summary>
 /// <returns></returns>
 public RedisProducer GetRedisProducer()
 {
     if (_redisProducer == null)
     {
         _redisProducer = new RedisProducer(_cnn);
     }
     return(_redisProducer);
 }
コード例 #4
0
 internal void SendToMessageQueue(RedisValue value)
 {
     if (_publisher == null)
     {
         var redisConnection = (RedisConnection)Container.Connection;
         _publisher = new RedisProducer(redisConnection);
     }
     _publisher.PublishToFront(MessageQueue.Name, value);
 }
コード例 #5
0
ファイル: MessagePush.cs プロジェクト: luwanchao915/YunMall
 /// <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);
 }
コード例 #6
0
 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);
 }
コード例 #7
0
        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);
        }
コード例 #8
0
ファイル: Form1.cs プロジェクト: chretbow/RedisSample
        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
            });
        }
コード例 #9
0
ファイル: MessagePush.cs プロジェクト: luwanchao915/YunMall
 /// <summary>
 /// 构造函数获取生产者对象
 /// </summary>
 public MessagePush()
 {
     redisProducer = new RedisProducer();
 }