private void SerializeDatabaseMessage(DatabaseMessage message) { JsonDataTransferMessage dtm = ProduceDataTransferMessage(message); string json = JsonSerializer.Serialize(dtm); message.MessageBytes = Encoding.UTF8.GetBytes(json); }
private void ConfigureMessageProperties(DatabaseMessage message, IBasicProperties properties) { properties.AppId = message.Sender; properties.Type = message.MessageType; properties.MessageId = message.Uuid.ToString(); if (properties.Headers == null) { properties.Headers = new Dictionary <string, object>(); } else { properties.Headers.Clear(); } SetOperationTypeHeader(message, properties); if (Settings.MessageBrokerSettings.ExchangeRole == 0) { SetAggregatorCopyHeader(message, properties); } else { SetDispatcherCopyHeader(message, properties); } }
private void SetDispatcherCopyHeader(DatabaseMessage message, IBasicProperties properties) { if (string.IsNullOrWhiteSpace(message.Recipients)) { return; } string header = (Settings.MessageBrokerSettings.CopyType == 0 ? "CC" : "BCC"); properties.Headers.Add(header, message.Recipients.Split(',', StringSplitOptions.RemoveEmptyEntries)); }
private void SetAggregatorCopyHeader(DatabaseMessage message, IBasicProperties properties) { if (string.IsNullOrWhiteSpace(message.Sender)) { return; } string header = (Settings.MessageBrokerSettings.CopyType == 0 ? "CC" : "BCC"); properties.Headers.Add(header, new string[] { message.Sender }); }
private void PublishMessage(ProducerChannel channel, DatabaseMessage message) { string exchange = Settings.MessageBrokerSettings.TopicExchange; string routingKey = message.MessageType; byte[] messageBytes = Encoding.UTF8.GetBytes(message.MessageBody); ConfigureMessageProperties(message, channel.Properties); channel.Channel.BasicPublish(exchange, routingKey, channel.Properties, messageBytes); }
private DatabaseMessage CreateDatabaseMessage(DbDataReader reader) { DatabaseMessage message = new DatabaseMessage(); message.Code = reader.IsDBNull(0) ? 0 : (long)reader.GetDecimal(0); message.Uuid = reader.IsDBNull(1) ? Guid.Empty : new Guid((byte[])reader[1]); message.DateTimeStamp = reader.IsDBNull(2) ? DateTime.MinValue : reader.GetDateTime(2); message.Sender = reader.IsDBNull(3) ? string.Empty : reader.GetString(3); message.Recipients = reader.IsDBNull(4) ? string.Empty : reader.GetString(4); message.OperationType = reader.IsDBNull(5) ? string.Empty : reader.GetString(5); message.MessageType = reader.IsDBNull(6) ? string.Empty : reader.GetString(6); message.MessageBody = reader.IsDBNull(7) ? string.Empty : reader.GetString(7); return(message); }
private DatabaseMessage CreateDatabaseMessage(DbDataReader reader) { DatabaseMessage message = new DatabaseMessage(); message.Code = reader.IsDBNull(0) ? 0 : (long)reader.GetDecimal("МоментВремени"); message.Uuid = reader.IsDBNull(1) ? Guid.Empty : new Guid((byte[])reader["Идентификатор"]); message.DateTimeStamp = reader.IsDBNull(2) ? DateTime.MinValue : reader.GetDateTime("ДатаВремя").AddYears(-YearOffset); message.Sender = reader.IsDBNull(3) ? string.Empty : reader.GetString("Отправитель"); message.Recipients = reader.IsDBNull(4) ? string.Empty : reader.GetString("Получатели"); message.OperationType = reader.IsDBNull(5) ? string.Empty : reader.GetString("ТипОперации"); message.MessageType = reader.IsDBNull(6) ? string.Empty : reader.GetString("ТипСообщения"); message.MessageBody = reader.IsDBNull(7) ? string.Empty : reader.GetString("ТелоСообщения"); return(message); }
private JsonDataTransferMessage ProduceDataTransferMessage(DatabaseMessage data) { JsonDataTransferMessage message = new JsonDataTransferMessage() { Sender = data.Sender }; message.Objects.Add(new JsonDataTransferObject() { Type = data.MessageType, Body = data.MessageBody, Operation = data.OperationType }); return(message); }
private void SetOperationTypeHeader(DatabaseMessage message, IBasicProperties properties) { if (string.IsNullOrWhiteSpace(message.OperationType)) { return; } if (properties.Headers == null) { properties.Headers = new Dictionary <string, object>(); } if (!properties.Headers.TryAdd("OperationType", message.OperationType)) { properties.Headers["OperationType"] = message.OperationType; } }
private string[] GetRecipients(DatabaseMessage message) { return(message.Recipients.Split(',', StringSplitOptions.RemoveEmptyEntries)); }