public IMQRegisterSubscriberResult RegisterSubscriber(IMQRegisterSubscriberParams paramsRegSubscr)
        {
            var result = new DbMQRegisterSubscriberResult();

            string        spName = "[SP_Register_Subscriber]";
            SqlConnection conn   = OpenConnection("ConnectionString");

            SqlCommand cmd = new SqlCommand();

            cmd.CommandText = schema + "." + spName;
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Connection  = conn;

            try
            {
                SqlParameter paramSubsName = new SqlParameter("@Subscriber_Name",
                                                              SqlDbType.NVarChar, 255,
                                                              ParameterDirection.Input, false, 0, 0, "", DataRowVersion.Current,
                                                              paramsRegSubscr.SubscriberName);

                SqlParameter paramSubsUrl = new SqlParameter("@Subscriber_Url",
                                                             SqlDbType.NVarChar, 255,
                                                             ParameterDirection.Input, true, 0, 0, "", DataRowVersion.Current,
                                                             paramsRegSubscr.SubscriberUrl != null ? (object)paramsRegSubscr.SubscriberUrl : DBNull.Value);

                SqlParameter paramOutSubsId = new SqlParameter("@Subscriber_Id",
                                                               SqlDbType.BigInt, 0,
                                                               ParameterDirection.Output, false, 0, 0, "", DataRowVersion.Current,
                                                               result.SubscriberId);

                cmd.Parameters.Add(paramSubsName);
                cmd.Parameters.Add(paramSubsUrl);
                cmd.Parameters.Add(paramOutSubsId);

                cmd.ExecuteNonQuery();

                result.SubscriberId = (long)paramOutSubsId.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);
        }
        public void RegisterSubscriber_Success()
        {
            RunInitSql("000.RegisterSubscriber_Success", _conn);

            IMessageQueue mq = CreateMQ();

            IMQRegisterSubscriberParams paramsRegSubscr = mq.CreateRegisterSubscriberParams();

            paramsRegSubscr.SubscriberName = ConfigurationManager.AppSettings["SenderName"];
            paramsRegSubscr.SubscriberUrl  = null;

            IMQRegisterSubscriberResult result = mq.RegisterSubscriber(paramsRegSubscr);

            RunFinalizeSql("000.RegisterSubscriber_Success", _conn);

            Assert.IsNotNull(result);
            Assert.IsTrue(result.Success);
            Assert.Greater(result.SubscriberId, 0);
        }
        public void RegisterSubscriber_AlreadyExists()
        {
            RunInitSql("001.RegisterSubscriber_AlreadyExists", _conn);

            IMessageQueue mq = CreateMQ();

            IMQRegisterSubscriberParams paramsRegSubscr = mq.CreateRegisterSubscriberParams();

            paramsRegSubscr.SubscriberName = ConfigurationManager.AppSettings["SenderName"];
            paramsRegSubscr.SubscriberUrl  = null;

            IMQRegisterSubscriberResult result = mq.RegisterSubscriber(paramsRegSubscr);

            RunFinalizeSql("001.RegisterSubscriber_AlreadyExists", _conn);

            Assert.IsNotNull(result);
            Assert.IsFalse(result.Success);
            Assert.IsNotEmpty(result.Errors);
            Assert.AreEqual(result.SubscriberId, 0);
        }
Beispiel #4
0
        public bool Init(string name)
        {
            if (_subscriberId <= 0 && _listener == null)
            {
                IMQRegisterSubscriberParams paramsRegSubs = _mq.CreateRegisterSubscriberParams();
                paramsRegSubs.SubscriberName = name;

                var result = _mq.RegisterSubscriber(paramsRegSubs);
                IMQGetSubscriberIdResult resGetId = null;
                if (!result.Success)
                {
                    IMQGetSubscriberIdParams paramGetId = _mq.CreateGetSubscriberIdParams();
                    paramGetId.SubscriberName = name;

                    resGetId = _mq.GetSubscriberId(paramGetId);
                    if (resGetId.Success)
                    {
                        _subscriberId = (long)resGetId.SubscriberId;
                    }
                }
                else
                {
                    _subscriberId = result.SubscriberId;
                }

                _name = name;

                _listener    = new Task(ListenerThread);
                _isListening = true;
                _listener.Start();


                return(result.Success || (resGetId != null && resGetId.Success));
            }
            else
            {
                return(true);
            }
        }