コード例 #1
0
ファイル: BSLException.cs プロジェクト: buibup/Assignment-1
        public override string Format(object oSource, string sCode, string sMessage, System.Exception oInnerException)
        {
            StringBuilder sNewMessage = new StringBuilder();
            string        sErrorStack = null;

            // if sPNR is not null or not empty, insert PNR into sMessage
            if (MessageExt != null && this.MessageExt != string.Empty)
            {
                sMessage = MessageExt.ToUpper() + " - " + sMessage;
            }

            // get the error stack, if InnerException is null, sErrorStack will be "exception was not chained" and should never be null
            sErrorStack = BuildErrorStack(oInnerException);

            // we want immediate gradification
            Trace.AutoFlush = true;

            sNewMessage.Append("Exception Summary \r\n")
            .Append("---------------------------------------------------------------------------------------\r\n")
            .Append(DateTime.Now.ToShortDateString())
            .Append(":")
            .Append(DateTime.Now.ToShortTimeString())
            .Append(" - ")
            .Append(sMessage)
            .Append("\r\n\r\n")
            .Append(sErrorStack);

            return(sNewMessage.ToString());
        }
コード例 #2
0
ファイル: Consumer.cs プロジェクト: wanglong/NewLife.RocketMQ
        /// <summary>从指定队列拉取消息</summary>
        /// <param name="mq"></param>
        /// <param name="offset"></param>
        /// <param name="maxNums"></param>
        /// <param name="msTimeout"></param>
        /// <returns></returns>
        public PullResult Pull(MessageQueue mq, Int64 offset, Int32 maxNums, Int32 msTimeout = -1)
        {
            var header = new PullMessageRequestHeader
            {
                ConsumerGroup = Group,
                Topic         = Topic,
                QueueId       = mq.QueueId,
                QueueOffset   = offset,
                MaxMsgNums    = maxNums,
                SysFlag       = 6,
                SubVersion    = StartTime.ToLong(),
            };

            if (msTimeout >= 0)
            {
                header.SuspendTimeoutMillis = msTimeout;
            }

            var st = _Queues.FirstOrDefault(e => e.Queue == mq);

            if (st != null)
            {
                header.CommitOffset = st.CommitOffset;
            }

            var dic = header.GetProperties();
            var bk  = GetBroker(mq.BrokerName);

            var rs = bk.Invoke(RequestCode.PULL_MESSAGE, null, dic, true);

            if (rs?.Header == null)
            {
                return(null);
            }

            var pr = new PullResult();

            if (rs.Header.Code == 0)
            {
                pr.Status = PullStatus.Found;
            }
            else if (rs.Header.Code == (Int32)ResponseCode.PULL_NOT_FOUND)
            {
                pr.Status = PullStatus.NoNewMessage;
            }
            else if (rs.Header.Code == (Int32)ResponseCode.PULL_OFFSET_MOVED)
            {
                pr.Status = PullStatus.OffsetIllegal;
            }

            pr.Read(rs.Header?.ExtFields);

            // 读取内容
            if (rs.Body != null && rs.Body.Length > 0)
            {
                pr.Messages = MessageExt.ReadAll(rs.Body).ToArray();
            }

            return(pr);
        }
コード例 #3
0
 public ConsumeOrderlyStatus consumeMessage(List msgs, ConsumeOrderlyContext context)
 {
     try
     {
         var messageList = msgs.iterator();
         while (messageList.hasNext())
         {
             MessageExt msg     = (MessageExt)messageList.next();
             byte[]     msgbody = msg.getBody();
             string     body    = Encoding.UTF8.GetString(msgbody);
             Console.WriteLine("===> consumed msg :" + body);
         }
     }
     catch (Exception ex)
     {
     }
     return(ConsumeOrderlyStatus.SUCCESS);
 }
コード例 #4
0
ファイル: Consumer.cs プロジェクト: wbz-hot/NewLife.RocketMQ
        /// <summary>从指定队列拉取消息</summary>
        /// <param name="mq"></param>
        /// <param name="offset"></param>
        /// <param name="maxNums"></param>
        /// <param name="msTimeout"></param>
        /// <returns></returns>
        public PullResult Pull(MessageQueue mq, Int64 offset, Int32 maxNums, Int32 msTimeout = -1)
        {
            // 性能埋点
            using var span = Tracer?.NewSpan($"mq:{Topic}:Consume");
            try
            {
                var header = new PullMessageRequestHeader
                {
                    ConsumerGroup = Group,
                    Topic         = Topic,
                    QueueId       = mq.QueueId,
                    QueueOffset   = offset,
                    MaxMsgNums    = maxNums,
                    SysFlag       = 6,
                    SubVersion    = StartTime.ToLong(),
                };
                if (msTimeout >= 0)
                {
                    header.SuspendTimeoutMillis = msTimeout;
                }

                var st = _Queues.FirstOrDefault(e => e.Queue == mq);
                if (st != null)
                {
                    header.CommitOffset = st.CommitOffset;
                }

                var dic = header.GetProperties();
                var bk  = GetBroker(mq.BrokerName);

                var rs = bk.Invoke(RequestCode.PULL_MESSAGE, null, dic, true);
                if (rs?.Header == null)
                {
                    return(null);
                }

                var pr = new PullResult();

                if (rs.Header.Code == 0)
                {
                    pr.Status = PullStatus.Found;
                }
                else if (rs.Header.Code == (Int32)ResponseCode.PULL_NOT_FOUND)
                {
                    pr.Status = PullStatus.NoNewMessage;
                }
                else if (rs.Header.Code == (Int32)ResponseCode.PULL_OFFSET_MOVED || rs.Header.Code == (Int32)ResponseCode.PULL_RETRY_IMMEDIATELY)
                {
                    pr.Status = PullStatus.OffsetIllegal;
                }
                else
                {
                    pr.Status = PullStatus.Unknown;
                    Log.Warn("响应编号:{0} 响应备注:{1} 序列编号:{2} 序列偏移量:{3}", rs.Header.Code, rs.Header.Remark, mq.QueueId, offset);
                }

                pr.Read(rs.Header?.ExtFields);

                // 读取内容
                var pk = rs.Payload;
                if (pk != null)
                {
                    pr.Messages = MessageExt.ReadAll(pk).ToArray();
                }

                return(pr);
            }
            catch (Exception ex)
            {
                span?.SetError(ex, mq);

                throw;
            }
        }
コード例 #5
0
 public override void Handle(string name, string type)
 {
     OnNewTopic?.Invoke(MessageExt.GetRosTopic(name), MessageExt.GetRosType(type));
 }