Ejemplo n.º 1
0
        public void PublishHostMsgInfo(Object secsLog)
        {
            lock (publishHostMsgLock)
            {
                try
                {
                    LogTitle_SECS logSECS = secsLog as LogTitle_SECS;

                    byte[] systemMsg_Serialize = BLL.LineBLL.Convert2GPB_SECSMsgInfo(logSECS);

                    if (systemMsg_Serialize != null)
                    {
                        scApp.getNatsManager().PublishAsync
                            (SCAppConstants.NATS_SUBJECT_SECS_LOG, systemMsg_Serialize);
                    }
                }
                catch (Exception ex)
                {
                    logger.Error(ex, "Exception:");
                }
            }
        }
        private void setSecsMessage()
        {
            string subject = BCAppConstants.NATSTopics.NATS_SUBJECT_SECS_LOG;

            //指定要執行的動作
            EventHandler <StanMsgHandlerArgs> msgHandler = (senders, args) =>
            {
                lock (SecsMsgLock)
                {
                    byte[] arrayByte = args.Message.Data;
                    if (arrayByte == null)
                    {
                        return;
                    }

                    //反序列化
                    Google.Protobuf.MessageParser <HOSTLOG_INFO> parser = new Google.Protobuf.MessageParser <HOSTLOG_INFO>(() => new HOSTLOG_INFO());
                    HOSTLOG_INFO hostmessage = parser.ParseFrom(arrayByte);

                    LogTitle_SECS logTitleTemp = new LogTitle_SECS()
                    {
                        EQ_ID      = hostmessage.EQID,
                        Sx         = hostmessage.SX,
                        Fy         = hostmessage.FY,
                        FunName    = hostmessage.FUNNAME,
                        SendRecive = hostmessage.SENDRECEIVE,
                        DeviceID   = hostmessage.DEVICE,
                        Message    = hostmessage.MESSAGE,
                        LogType    = BCAppConstants.LogType.SECS_ForHost.ToString()
                    };

                    logTitleTemp.Time = hostmessage.TIME;
                    Task.Run(() => logUtility.addLogInfo(logTitleTemp));
                }
            };

            //訂閱
            app.GetNatsManager().Subscriber(subject, msgHandler, false, true, 0, null);
        }