private void OnReceivedCore(int streamIndex, ulong id, ScaleoutMessage scaleoutMessage) { Counters.ScaleoutMessageBusMessagesReceivedPerSec.IncrementBy(scaleoutMessage.Messages.Count); _trace.TraceInformation("OnReceived({0}, {1}, {2})", streamIndex, id, scaleoutMessage.Messages.Count); TraceScaleoutMessages(id, scaleoutMessage); var localMapping = new LocalEventKeyInfo[scaleoutMessage.Messages.Count]; var keys = new HashSet <string>(); for (var i = 0; i < scaleoutMessage.Messages.Count; ++i) { Message message = scaleoutMessage.Messages[i]; // Remember where this message came from message.MappingId = id; message.StreamIndex = streamIndex; keys.Add(message.Key); ulong localId = Save(message); _trace.TraceVerbose("Message id: {0}, stream : {1}, eventKey: '{2}' saved with local id: {3}", id, streamIndex, message.Key, localId); MessageStore <Message> messageStore = Topics[message.Key].Store; localMapping[i] = new LocalEventKeyInfo(message.Key, localId, messageStore); } // Get the stream for this payload ScaleoutMappingStore store = StreamManager.Streams[streamIndex]; // Publish only after we've setup the mapping fully store.Add(id, scaleoutMessage, localMapping); if (_trace.Switch.ShouldTrace(TraceEventType.Verbose)) { _trace.TraceVerbose("Scheduling eventkeys: {0}", string.Join(",", keys)); } // Schedule after we're done foreach (var eventKey in keys) { ScheduleEvent(eventKey); } }
private void OnReceivedCore(int streamIndex, ulong id, ScaleoutMessage scaleoutMessage) { Counters.ScaleoutMessageBusMessagesReceivedPerSec.IncrementBy(scaleoutMessage.Messages.Count); _trace.TraceInformation("OnReceived({0}, {1}, {2})", streamIndex, id, scaleoutMessage.Messages.Count); var localMapping = new Dictionary <string, IList <LocalEventKeyInfo> >(StringComparer.OrdinalIgnoreCase); for (var i = 0; i < scaleoutMessage.Messages.Count; ++i) { Message message = scaleoutMessage.Messages[i]; // Remember where this message came from message.MappingId = id; message.StreamIndex = streamIndex; IList <LocalEventKeyInfo> keyInfo; if (!localMapping.TryGetValue(message.Key, out keyInfo)) { keyInfo = new List <LocalEventKeyInfo>(); localMapping.Add(message.Key, keyInfo); } ulong localId = Save(message); MessageStore <Message> messageStore = Topics[message.Key].Store; keyInfo.Add(new LocalEventKeyInfo(localId, messageStore)); } // Get the stream for this payload ScaleoutMappingStore store = StreamManager.Streams[streamIndex]; // Publish only after we've setup the mapping fully store.Add(id, scaleoutMessage, localMapping); // Schedule after we're done foreach (var eventKey in localMapping.Keys) { ScheduleEvent(eventKey); } }
private void OnReceivedCore(int streamIndex, ulong id, ScaleoutMessage scaleoutMessage) { Counters.ScaleoutMessageBusMessagesReceivedPerSec.IncrementBy(scaleoutMessage.Messages.Count); _logger.WriteInformation(String.Format("OnReceived({0}, {1}, {2})", streamIndex, id, scaleoutMessage.Messages.Count)); var localMapping = new LocalEventKeyInfo[scaleoutMessage.Messages.Count]; var keys = new HashSet <string>(); for (var i = 0; i < scaleoutMessage.Messages.Count; ++i) { Message message = scaleoutMessage.Messages[i]; // Remember where this message came from message.MappingId = id; message.StreamIndex = streamIndex; keys.Add(message.Key); ulong localId = Save(message); MessageStore <Message> messageStore = Topics[message.Key].Store; localMapping[i] = new LocalEventKeyInfo(message.Key, localId, messageStore); } // Get the stream for this payload ScaleoutMappingStore store = StreamManager.Streams[streamIndex]; // Publish only after we've setup the mapping fully store.Add(id, scaleoutMessage, localMapping); // Schedule after we're done foreach (var eventKey in keys) { ScheduleEvent(eventKey); } }
public LocalEventKeyInfo(ulong id, MessageStore <Message> store) { Id = id; MessageStore = store; }
public LocalEventKeyInfo(string key, ulong id, MessageStore<Message> store) { Key = key; Id = id; MessageStore = store; }