Esempio n. 1
0
        public void Publish(string topic, string key, byte[] data)
        {
            _snapshotCache.AddOrUpdate(topic, key, data);
            var message = NetMqMessageExtensions.CreateMessage(topic, data);

            _publishServer.Publish(message);
        }
Esempio n. 2
0
        private static void Main(string[] args)
        {
            using (NetMQContext context = NetMQContext.Create())
            {
               ReliableServer server = new ReliableServer(context, "tcp://*:6669");

                while (true)
                {
                    NetMQMessage message = new NetMQMessage();
                    message.Append("A");
                    message.Append(new Random().Next().ToString());
                    server.Publish(message);

                    Thread.Sleep(1000);
                }
            }
        }
Esempio n. 3
0
        private static void Main(string[] args)
        {
            using (NetMQContext context = NetMQContext.Create())
            {
                ReliableServer server = new ReliableServer(context, "tcp://*:6669");

                while (true)
                {
                    NetMQMessage message = new NetMQMessage();
                    message.Append("A");
                    message.Append(new Random().Next().ToString());
                    server.Publish(message);

                    Thread.Sleep(1000);
                }
            }
        }
Esempio n. 4
0
        private void ConsumeMessages()
        {
            var messageBulk = new List <byte[]>(_maxBulkSize);
            var lastPublish = DateTime.MinValue;
            var lastTopic   = "";

            foreach (var tuple in _buffer.GetConsumingEnumerable(_cancellationTokenSource.Token))
            {
                if (tuple.Item2 != null)
                {
                    messageBulk.Add(tuple.Item2);
                }

                var currentTopic = tuple.Item1;
                if (string.IsNullOrEmpty(lastTopic) && currentTopic != OnReceiveTimeoutTopic)
                {
                    lastTopic = currentTopic;
                }

                var publishTopic = lastTopic;

                if ((DateTime.UtcNow.Subtract(lastPublish).TotalMilliseconds > _publishInterval || //publish bulk on elapsed interval
                     messageBulk.Count == _maxBulkSize ||                                          //publish bulk on max size
                     currentTopic != lastTopic) &&  //publish bulk if topic changed (cannot send different topics in same bulk + should cover also case of recieve timeout)
                    messageBulk.Count > 0)
                {
                    if (currentTopic != OnReceiveTimeoutTopic) //don't update topic if its receive timeout
                    {
                        lastTopic = currentTopic;
                    }

                    _publishServer.Publish(CreateMultipartMessage(publishTopic, messageBulk));
                    lastPublish = DateTime.UtcNow;
                    messageBulk = new List <byte[]>(_maxBulkSize);
                }
            }
        }