public static string AddMessageDetailFromBatch(MessageBatch model) { MessageSysDAL dal = new MessageSysDAL(); string reMsg = ""; List <int> accIdList = CommonLib.Helper.JsonDeserializeObject <List <int> >(model.AccIdSet); foreach (var accid in accIdList) { MessageDetail tempModel = new MessageDetail(); tempModel.AccId = accid; tempModel.BatchId = model.BatchId; tempModel.ChannelId = model.ChannelId; tempModel.Content = model.Content; tempModel.CreateTime = DateTime.Now; tempModel.Remark = model.Remark; tempModel.Title = model.Title; tempModel.ArriveMark = 0; tempModel.OpenMark = 0; tempModel.ContentType = model.ContentType; tempModel.ContentUrl = model.ContentUrl; tempModel.AccIdNumber = T_AccountBLL.GetAccountNumber(model.ChannelId, accid); string tMsg = AddMessageDetail(tempModel); if (tMsg != "成功") { reMsg += tMsg; } } return(reMsg); }
internal static MessageBatch getMessageBatch(this RemoteDeliver rd) { var envelopes = new List <Remote.MessageEnvelope>(); var typeNames = new Dictionary <string, int>(); var targetNames = new Dictionary <string, int>(); var typeNameList = new List <string>(); var targetNameList = new List <string>(); var targetName = rd.Target.Id; var serializerId = rd.SerializerId == -1 ? Serialization.DefaultSerializerId : rd.SerializerId; if (!targetNames.TryGetValue(targetName, out var targetId)) { targetId = targetNames[targetName] = targetNames.Count; targetNameList.Add(targetName); } var typeName = Serialization.GetTypeName(rd.Message, serializerId); if (!typeNames.TryGetValue(typeName, out var typeId)) { typeId = typeNames[typeName] = typeNames.Count; typeNameList.Add(typeName); } Remote.MessageHeader header = null; if (rd.Header != null && rd.Header.Count > 0) { header = new Remote.MessageHeader(); header.HeaderData.Add(rd.Header.ToDictionary()); } var bytes = Serialization.Serialize(rd.Message, serializerId); var envelope = new Remote.MessageEnvelope { MessageData = bytes, Sender = rd.Sender, Target = targetId, TypeId = typeId, SerializerId = serializerId, MessageHeader = header, }; envelopes.Add(envelope); var batch = new MessageBatch(); batch.TargetNames.AddRange(targetNameList); batch.TypeNames.AddRange(typeNameList); batch.Envelopes.AddRange(envelopes); return(batch); }
public MessageBatch MessagesBatch(IEnumerable <NetworkMessage> messages) { var batch = new MessageBatch { MessageId = GenerateMessageId(), Content = ByteString.CopyFrom(new MessageBatchContent { Messages = { messages } }.ToByteArray()), Sender = _keyPair.PublicKey, }; batch.Signature = Crypto.Sign(batch.Content.ToArray(), _keyPair.PrivateKey.Encode(), true).ToSignature(true); return(batch); }
private async Task UpdateSubscribers(object arg) { var messages = new MessageBatch(_receivedMessages.ToArray()); var allSubscriptionHandles = await _clientStream.GetAllSubscriptionHandles(); if (allSubscriptionHandles.Count == 0) { this.GetLogger().Verbose("no client subscribers"); } await _clientStream.OnNextAsync(messages); _receivedMessages.Clear(); }
public void PersistResultsToFile(MessageBatch batch) { //sanity check we don't have if (batch.Messages == null || batch.Messages.Count == 0) { throw new Exception("You're asking me to save an empty file Mr President, that's not supposed to happen"); } using (StreamWriter file = File.CreateText(ConstructFileName(batch))) { JsonSerializer serializer = new JsonSerializer(); serializer.Serialize(file, batch.Messages); } }
/// <summary> /// 插入批次信息 /// </summary> /// <param name="model"></param> /// <returns></returns> public int AddMessageBatch(MessageBatch model) { StringBuilder strSql = new StringBuilder(); strSql.Append( "insert into MessageBatch (BatchId,AccIdSet,AccIdCount,ConditionDesc,SourceType," + "FilterLogVerify,CreateTime,ReviewState,SendingStatus,FeedBackArrive,FeedBackOpen," + "ChannelId,Title,Content,Remark,Operator,ContentType,ContentUrl) " + "Values(@BatchId,@AccIdSet,@AccIdCount,@ConditionDesc,@SourceType,@FilterLogVerify," + "@CreateTime,@ReviewState,@SendingStatus,@FeedBackArrive,@FeedBackOpen,@ChannelId," + "@Title,@Content,@Remark,@Operator,@ContentType,@ContentUrl);"); try { int reVal = DapperHelper.Execute(strSql.ToString(), new { BatchId = model.BatchId, AccIdSet = model.AccIdSet, AccIdCount = model.AccIdCount, ConditionDesc = "", SourceType = model.SourceType, FilterLogVerify = model.FilterLogVerify, CreateTime = DateTime.Now, ReviewState = 0, SendingStatus = 0, FeedBackArrive = 0, FeedBackOpen = 0, ChannelId = model.ChannelId, Title = model.Title, Content = model.Content, Remark = model.Remark, Operator = model.Operator, ContentType = model.ContentType, ContentUrl = model.ContentUrl }); return(reVal); } catch (Exception ex) { Logger.Error("插入消息批次" + model.BatchId + "出错", ex); return(0); } }
public static string AddMessageBatch(MessageBatch model) { MessageSysDAL dal = new MessageSysDAL(); int batchMark = dal.AddMessageBatch(model); string msg = ""; if (batchMark != 0) { //string reMsg = AddMessageDetailFromBatch(model); msg += "消息提交成功!"; //为该批次消息添加发送详情队列 return(msg + AddMessageDetailFromBatch(model)); } else { return("发送渠道ID为" + model.ChannelId + "的消息批次" + model.BatchId + "添加失败"); } }
public static string GenerateBatchByChannel(int channelId, string accIdSet, int accIdCount, int sourceType, string filterVerify, string title, string content, string remark, string batchId, string contentType = "", string contentUrl = "") { MessageBatch batchModel = new MessageBatch(); batchModel.AccIdCount = accIdCount; batchModel.AccIdSet = accIdSet; batchModel.BatchId = batchId; batchModel.ChannelId = channelId; batchModel.Content = content; batchModel.CreateTime = DateTime.Now; batchModel.Remark = remark; batchModel.Title = title; batchModel.ReviewState = 0; batchModel.SendingStatus = 0; batchModel.SourceType = sourceType; batchModel.FilterLogVerify = filterVerify; batchModel.ContentType = contentType; batchModel.ContentUrl = contentUrl; return(MessageSysBLL.AddMessageBatch(batchModel)); }
public List <MyMessage> ReadResultsFromFile(MessageBatch batch) { try { //TODO output more useful info liek the filename using (FileStream stream = new FileStream(ConstructFileName(batch), FileMode.Open)) using (StreamReader file = new StreamReader(stream)) { JsonSerializer serializer = new JsonSerializer(); ITraceWriter writer = new MemoryTraceWriter(); serializer.TraceWriter = writer; var messages = (List <MyMessage>)serializer.Deserialize(file, typeof(List <MyMessage>)); _logger.LogDebug("Read {0} objects from file", messages.Count); return(messages); } } catch (Exception e) { //TODO handle exceptions } return(null); }
async Task <MessageBatch> GetOutlookDataAsync(MessageBatch messageBatch) { if (!messageBatch.RetrievedFromCache) { //get them from the API var outlookData = await _graphService.RetrieveBatch(messageBatch.StartDate, messageBatch.EndDate); if (outlookData.Count == 0) { return(messageBatch); } //convert them into a data format we actually can use, and persist //TODO - put this in a proper converter messageBatch.Messages = outlookData.Select(m => new MyMessage { OutlookMessage = m }).ToList(); _logger.LogInformation($"Retrieved {outlookData.Count} messages from Microsoft"); messageBatch.Save(); } else { //TODO implement a way to disable automatically loading from a cache _logger.LogDebug("Loaded this batch from a previous file. Turn off caching if you didn't want this"); var howManyMessagesAreAlreadyProcessed = messageBatch.ConfirmedMigrationStatus.Count; if (howManyMessagesAreAlreadyProcessed > 1) { _logger.LogInformation("Found {0} of these message have already been processed, leaving {1} messages to find information on", howManyMessagesAreAlreadyProcessed, messageBatch.Messages.Count - howManyMessagesAreAlreadyProcessed); } else { _logger.LogInformation($"Doesn't look like we'd previously processed any of these. Going ahead with {messageBatch.Messages.Count} messages to find information on"); } } return(messageBatch); }
private void Bind() { _logger.LogTrace($"Connecting to inbound endpoint '{_endpoint.Name}'..."); _settings.Validate(); if (_settings.Batch.Size > 1) { var batch = new MessageBatch( _settings.Batch, _messagesHandler, Commit, _rollbackHandler, _errorPolicy, _serviceProvider); _consumer.Received += (_, args) => batch.AddMessage(CreateInboundMessage(args)); } else { _consumer.Received += (_, args) => ProcessSingleMessage(CreateInboundMessage(args)); } }
private MessageBatch MatchToGmailData(MessageBatch messageBatch) { //TODO given we have to make n calls to Gmail API, one for each message, let's at least batch them shall we? int i = 0; foreach (var message in messageBatch.UnconfirmedMigrationStatus) { try { var gmailId = _gmailService.FindMessageByRFC822(message.OutlookMessage.InternetMessageId.Replace("<", "").Replace(">", "")); bool isInGmail = !String.IsNullOrWhiteSpace(gmailId); message.IsMigratedToGmail = isInGmail; if (isInGmail) { message.GmailId = gmailId; } } catch (Exception e) { _logger.LogWarning(String.Format("Couldn't retrieve id {0} from Gmail (date: {1}, subject: {2}). Error was {3}", message.OutlookMessage.InternetMessageId, message.OutlookMessage.SentDateTime, message.OutlookMessage.Subject, e.Message)); } finally { i++; if (i % 100 == 0) { _logger.LogDebug("Retriving Gmail information for messages {0}00 and onwards", i / 100); } } } _logger.LogInformation(messageBatch.ToString()); return(messageBatch); }
protected override void setup() { _batch = new MessageBatch(); }
private string ConstructFileName(MessageBatch batch) { return(String.Format(@"Office365DataStore-{0}-{1}.json", batch.StartDate.ToString("yyyy-MM-dd"), batch.EndDate.ToString("yyyy-MM-dd"))); }
public bool LocalFileExists(MessageBatch batch) { return(File.Exists(ConstructFileName(batch))); }