/// <summary> /// Builds the xml message body from the raw feed message (instance) /// </summary> /// <param name="message">The message to be serialized</param> /// <returns>Returns xml message body</returns> private string BuildMessageBody(TestFeedMessage message) { if (message is alive aliveMsg) { return(Helper.Serialize(aliveMsg)); } if (message is odds_change oddsChange) { return(Helper.Serialize(oddsChange)); } if (message is bet_stop betStop) { return(Helper.Serialize(betStop)); } if (message is fixture_change fixtureChange) { return(Helper.Serialize(fixtureChange)); } if (message is snapshot_complete snapshotComplete) { return(Helper.Serialize(snapshotComplete)); } if (message is bet_settlement betSettlement) { return(Helper.Serialize(betSettlement)); } return(Helper.Serialize(message)); }
/// <summary> /// Sends the message /// </summary> /// <param name="message">The message to be send</param> /// <param name="routingKey">The routing key to be applied or it will be generated based on message type</param> /// <param name="timestamp">The timestamp to be applied or Now</param> public void Send(TestFeedMessage message, string routingKey = null, long timestamp = 0) { var msgBody = BuildMessageBody(message); if (routingKey.IsNullOrEmpty()) { routingKey = BuildRoutingKey(message); } Send(msgBody, routingKey, timestamp); }
/// <summary> /// Builds the routing key from the message type /// </summary> /// <param name="message">The message</param> /// <returns>Returns the appropriate routing key</returns> private string BuildRoutingKey(TestFeedMessage message) { if (message.GetType() == typeof(alive)) { return("-.-.-.alive.-.-.-.-"); } else if (message.GetType() == typeof(odds_change)) { var oddsChange = (odds_change)message; var sportId = 1; //oddsChange var urn = URN.Parse(oddsChange.event_id); return($"hi.{BuildSessionPartOfRoutingKey(oddsChange.product)}.odds_change.{sportId}.{urn.Prefix}:{urn.Type}.{urn.Id}.-"); } else if (message.GetType() == typeof(bet_stop)) { var betStop = (bet_stop)message; var sportId = 1; var urn = URN.Parse(betStop.event_id); return($"hi.{BuildSessionPartOfRoutingKey(betStop.product)}.bet_stop.{sportId}.{urn.Prefix}:{urn.Type}.{urn.Id}.-"); } else if (message.GetType() == typeof(fixture_change)) { var fixtureChange = (fixture_change)message; var sportId = 1; var urn = URN.Parse(fixtureChange.event_id); return($"hi.pre.live.fixture_change.{sportId}.{urn.Prefix}:{urn.Type}.{urn.Id}.-"); } else if (message.GetType() == typeof(snapshot_complete)) { return("-.-.-.snapshot_complete.-.-.-.-"); } else if (message.GetType() == typeof(bet_settlement)) { var betSettlement = (bet_settlement)message; var sportId = 1; var urn = URN.Parse(betSettlement.event_id); return($"lo.{BuildSessionPartOfRoutingKey(betSettlement.product)}.bet_settlement.{sportId}.{urn.Prefix}:{urn.Type}.{urn.Id}.-"); } return(string.Empty); }