public void Send(TransportMessage toSend, IEnumerable <string> destinations) { TransactionWrapper.RunInTransaction(transaction => { toSend.TimeSent = DateTime.UtcNow; toSend.ReturnAddress = this.ReturnAddress; var serializedMessage = string.Empty; using (var stream = new MemoryStream()) { TransportMessageSerializer.Serialize(toSend, stream); foreach (var destination in destinations) { var conversationHandle = ServiceBrokerWrapper.SendOne(transaction, ReturnAddress, destination, NServiceBusTransportMessageContract, NServiceBusTransportMessage, stream.ToArray()); toSend.Id = conversationHandle.ToString(); if (Logger.IsDebugEnabled) { Logger.Debug(string.Format("Sending message {0} with ID {1} to destination {2}.\n" + "ToString() of the message yields: {3}\n" + "Message headers:\n{4}", toSend.Body[0].GetType().AssemblyQualifiedName, toSend.Id, destination, toSend.Body[0], string.Join(", ", toSend.Headers.Select(h => h.Key + ":" + h.Value).ToArray()) )); } } } }); }
public void Handle(PersistMessageCommand message) { if (message.Targets == null) { return; } var transportMessage = message.TransportMessage; if (string.IsNullOrEmpty(transportMessage.MessageTypeId.FullName)) { _log.Error($"Message received with empty TypeId, MessageId: {transportMessage.Id}, SenderId: {transportMessage.Originator.SenderId}"); return; } var transportMessageBytes = _serializer.Serialize(transportMessage); foreach (var target in message.Targets) { if (string.IsNullOrEmpty(target.ToString())) { _log.Error($"Message received with empty target, MessageId: {transportMessage.Id}, SenderId: {transportMessage.Originator.SenderId}"); continue; } if (_configuration.PeerIdsToInvestigate != null && _configuration.PeerIdsToInvestigate.Contains(target.ToString())) { _log.Info($"Message received for peer {target}, MessageId: {transportMessage.Id}, MessageType: {transportMessage.MessageTypeId}"); } _messageReplayerRepository.GetActiveMessageReplayer(target)?.AddLiveMessage(transportMessage); _inMemoryMessageMatcher.EnqueueMessage(target, transportMessage.Id, transportMessage.MessageTypeId, transportMessageBytes); } }
private List <TransportMessage> InsertMessagesInThePast(DateTime refDateTime, int messageCount = 11) { MessageId.ResetLastTimestamp(); // because it goes back in the past! var refTime = refDateTime.AddHours(-messageCount); var transportMessages = new List <TransportMessage>(); for (var i = 0; i < messageCount; ++i) { TransportMessage transportMessage; using (SystemDateTime.Set(refTime)) { transportMessage = new FakeCommand(i).ToTransportMessage(_anotherPeer); } transportMessages.Add(transportMessage); _insertedMessages.AddRange(_transportMessageSerializer.Serialize(transportMessage)); refTime = refTime.AddHours(1); } return(transportMessages); }
public void Handle(PersistMessageCommand message) { if (message.Targets == null) { return; } var transportMessage = message.TransportMessage; var transportMessageBytes = _serializer.Serialize(transportMessage); foreach (var target in message.Targets) { if (_configuration.PeerIdsToInvestigate != null && _configuration.PeerIdsToInvestigate.Contains(target.ToString())) { _log.Info($"Message received for peer {target}. MessageId: {transportMessage.Id}. MessageType: {transportMessage.MessageTypeId}"); } _messageReplayerRepository.GetActiveMessageReplayer(target)?.AddLiveMessage(transportMessage); _inMemoryMessageMatcher.EnqueueMessage(target, transportMessage.Id, transportMessage.MessageTypeId, transportMessageBytes); } }