Example #1
0
 public static IBlobSerializer AsBlobSerializer(this ITextSerializer serializer, Encoding encoding = null)
 {
     return(new BlobSerializerDelegate(
                obj => serializer.SerializeToBytes(obj, encoding),
                (data, type) => serializer.DeserializeFromBytes(data, type, encoding),
                serializer.CanDeserialize));
 }
        private async Task <string> EnqueueEventPostAsync(PersistentEvent ev)
        {
            var eventPostInfo = new EventPost(_options.EnableArchive)
            {
                OrganizationId  = ev.OrganizationId,
                ProjectId       = ev.ProjectId,
                ApiVersion      = 2,
                CharSet         = "utf-8",
                ContentEncoding = "gzip",
                MediaType       = "application/json",
                UserAgent       = "exceptionless-test",
            };

            var stream = new MemoryStream(_serializer.SerializeToBytes(ev).Compress());

            return(await _eventPostService.EnqueueAsync(eventPostInfo, stream).AnyContext());
        }
Example #3
0
        private void Push(params TDescriptor[] descriptors)
        {
            var producerDatas = new List <ProducerData <string, Message> >();

            foreach (var descriptor in descriptors)
            {
                var serialized = _serializer.SerializeToBytes(descriptor);
                var message    = new Message(serialized);
                var key        = descriptor.GetKey();

                producerDatas.Add(new ProducerData <string, Message>(_topic, key, message));
            }


            var retryTimes = 0;
            var stopwatch  = Stopwatch.StartNew();
            var maxtime    = TimeSpan.FromMinutes(5);

            while (true)
            {
                try
                {
                    _producer.Value.Send(producerDatas);
                    break;
                }
                catch (Exception ex)
                {
                    if (stopwatch.Elapsed > maxtime)
                    {
                        stopwatch.Stop();
                        LogManager.Default.Error(ex,
                                                 "Sending messages to Kafka topic:'{0}' failed, it has been try {1} times.", _topic,
                                                 retryTimes);
                        break;
                    }
                }
                var waitTime = Math.Min((int)Math.Pow(2, ++retryTimes), 60);
                Thread.Sleep(waitTime * 500);
            }

            if (LogManager.Default.IsDebugEnabled)
            {
                LogManager.Default.DebugFormat("Send messages to Kafka topic:'{0}' successfully.", _topic);
            }
        }