public void PushMessage_Success() { RunInitSql("030.PushMessage_Success", _conn); IMessageQueue mq = CreateMQ(); // getting channel ID IMQGetChannelIdParams paramsGetChannelId = mq.CreateGetChannelIdParams(); paramsGetChannelId.ChannelName = ConfigurationManager.AppSettings["ChannelName"]; IMQGetChannelIdResult channelId = mq.GetChannelId(paramsGetChannelId); // getting subscribers ID IMQGetSubscriberIdParams paramsSenderId = mq.CreateGetSubscriberIdParams(); paramsSenderId.SubscriberName = ConfigurationManager.AppSettings["SenderName"]; IMQGetSubscriberIdResult senderId = mq.GetSubscriberId(paramsSenderId); IMQGetSubscriberIdParams paramsRecId = mq.CreateGetSubscriberIdParams(); paramsSenderId.SubscriberName = ConfigurationManager.AppSettings["ReceiverName"]; IMQGetSubscriberIdResult receiverId = mq.GetSubscriberId(paramsSenderId); // subscribing both IMQSubscribeParams paramSubscribe = mq.CreateSubscribeParams(); paramSubscribe.ChannelId = (long)channelId.ChannelId; paramSubscribe.SubscriberId = (long)senderId.SubscriberId; var subscribeResult = mq.Subscribe(paramSubscribe); paramSubscribe.SubscriberId = (long)receiverId.SubscriberId; subscribeResult = mq.Subscribe(paramSubscribe); // sending message IMQPushMessageParams paramsPush = mq.CreatePushMessageParams(); paramsPush.ChannelId = (long)channelId.ChannelId; paramsPush.SenderId = (long)senderId.SubscriberId; paramsPush.MessageType = ConfigurationManager.AppSettings["TestMessageType"]; paramsPush.Payload = ConfigurationManager.AppSettings["TestMessagePayload"]; paramsPush.RecipientId = null; var result = mq.PushMessage(paramsPush); RunFinalizeSql("030.PushMessage_Success", _conn); Assert.IsNotNull(result); Assert.IsTrue(result.Success); Assert.IsEmpty(result.Errors); Assert.Greater(result.MessageId, 0); }
public bool Push(string channel, string type, string payload, string recipient = null) { ValidateInitialized(); long?recId = null; if (recipient != null) { IMQGetSubscriberIdParams paramsGetSubId = _mq.CreateGetSubscriberIdParams(); paramsGetSubId.SubscriberName = recipient; var resRecId = _mq.GetSubscriberId(paramsGetSubId); if (resRecId.Success) { recId = resRecId.SubscriberId; } } if (_channels.ContainsKey(channel)) { IMQPushMessageParams paramsPush = _mq.CreatePushMessageParams(); paramsPush.ChannelId = _channels[channel]; paramsPush.SenderId = _subscriberId; paramsPush.MessageType = type; paramsPush.Payload = payload; paramsPush.RecipientId = recId; var resPush = _mq.PushMessage(paramsPush); return(resPush.Success); } else { return(false); } }
public IMQPushMessageResult PushMessage(IMQPushMessageParams paramsPushMsg) { var result = new DbMQPushMessageResult(); string spName = "[SP_Push_Message]"; SqlConnection conn = OpenConnection("ConnectionString"); SqlCommand cmd = new SqlCommand(); cmd.CommandText = schema + "." + spName; cmd.CommandType = CommandType.StoredProcedure; cmd.Connection = conn; try { //TODO: add parameters and calls here SqlParameter paramChannelId = new SqlParameter("@IN_Channel_Id", SqlDbType.BigInt, 0, ParameterDirection.Input, false, 0, 0, "", DataRowVersion.Current, paramsPushMsg.ChannelId); SqlParameter paramSenderId = new SqlParameter("@IN_Sender_Id", SqlDbType.BigInt, 0, ParameterDirection.Input, false, 0, 0, "", DataRowVersion.Current, paramsPushMsg.SenderId); SqlParameter paramRecipientId = new SqlParameter("@IN_Recipient_Id", SqlDbType.BigInt, 0, ParameterDirection.Input, true, 0, 0, "", DataRowVersion.Current, paramsPushMsg.RecipientId != null ? (object)paramsPushMsg.RecipientId : DBNull.Value); SqlParameter paramMsgType = new SqlParameter("@IN_Message_Type", SqlDbType.NVarChar, 255, ParameterDirection.Input, true, 0, 0, "", DataRowVersion.Current, paramsPushMsg.MessageType); SqlParameter paramPayload = new SqlParameter("@IN_Payload", SqlDbType.NVarChar, -1, ParameterDirection.Input, true, 0, 0, "", DataRowVersion.Current, paramsPushMsg.Payload); SqlParameter paramOutMsgId = new SqlParameter("@OUT_Message_Id", SqlDbType.BigInt, 0, ParameterDirection.Output, false, 0, 0, "", DataRowVersion.Current, result.MessageId); cmd.Parameters.Add(paramChannelId); cmd.Parameters.Add(paramSenderId); cmd.Parameters.Add(paramRecipientId); cmd.Parameters.Add(paramMsgType); cmd.Parameters.Add(paramPayload); cmd.Parameters.Add(paramOutMsgId); cmd.ExecuteNonQuery(); result.MessageId = (long)paramOutMsgId.Value; result.Success = true; } catch (Exception ex) { result.Success = false; result.Errors.Add(new Interfaces.Error() { Message = ex.Message, Code = Interfaces.EErrorCodes.MQDbError, Type = Interfaces.EErrorType.Error }); } conn.Close(); return(result); }