/// <summary> /// Send like message /// </summary> /// <param name="likeHandle">Like handle</param> /// <param name="contentType">Content type</param> /// <param name="contentHandle">Content handle</param> /// <param name="userHandle">User handle</param> /// <param name="liked">Like status</param> /// <param name="contentPublisherType">Content publisher type</param> /// <param name="contentUserHandle">User handle of the content publisher</param> /// <param name="contentCreatedTime">Content createdTime</param> /// <param name="appHandle">App handle</param> /// <param name="lastUpdatedTime">Last updated time</param> /// <returns>Send message task</returns> public async Task SendLikeMessage( string likeHandle, ContentType contentType, string contentHandle, string userHandle, bool liked, PublisherType contentPublisherType, string contentUserHandle, DateTime contentCreatedTime, string appHandle, DateTime lastUpdatedTime) { LikeMessage message = new LikeMessage() { LikeHandle = likeHandle, ContentType = contentType, ContentHandle = contentHandle, UserHandle = userHandle, Liked = liked, ContentPublisherType = contentPublisherType, ContentUserHandle = contentUserHandle, ContentCreatedTime = contentCreatedTime, AppHandle = appHandle, LastUpdatedTime = lastUpdatedTime }; Queue queue = await this.QueueManager.GetQueue(this.QueueIdentifier); await queue.SendAsync(message); }
/// <summary> /// Process message /// </summary> /// <param name="message">Queue message</param> /// <returns>Process message task</returns> protected override async Task Process(IMessage message) { if (message is LikeMessage) { LikeMessage likeMessage = message as LikeMessage; ProcessType processType = ProcessType.Backend; if (likeMessage.DequeueCount > 1) { processType = ProcessType.BackendRetry; } var likeLookupEntity = await this.likesManager.ReadLike(likeMessage.ContentHandle, likeMessage.UserHandle); if (likeLookupEntity != null && likeLookupEntity.LastUpdatedTime > likeMessage.LastUpdatedTime) { return; } await this.likesManager.UpdateLike( processType, likeMessage.LikeHandle, likeMessage.ContentType, likeMessage.ContentHandle, likeMessage.UserHandle, likeMessage.Liked, likeMessage.ContentPublisherType, likeMessage.ContentUserHandle, likeMessage.ContentCreatedTime, likeMessage.AppHandle, likeMessage.LastUpdatedTime, likeLookupEntity); } }
void OnLikeReceived(LikeMessage msg) { LikeReceived(this, new SessionEventArgs(msg.SessionId, msg.Sender)); Trace.WriteLine(msg.Sender + " is liking."); }