EddyGuzman Ответов: 0

Отправить JSON через activemq


- Привет!
Я пытаюсь отправить формат JSON через ActiveMQ (консольное приложение C#), но прямо сейчас мне нужно следующее:
1) Если я отправляю прямую сериализацию JSON (в виде строки), система добавляет обратные косые черты "\" к тексту, что делает мой слушатель неспособным обработать информацию.

2) я могу удалить обратные косые черты, выполнив синтаксический анализ JToken, но я не могу отправить var на ActiveMQ (ITextMessage запрашивает строку, я отправляю JToken), и, конечно, если я приведу JToken к строке, я снова найду обратные косые черты "\"

Есть какие-нибудь подсказки о том, как я могу достичь своей цели???

Что я уже пробовал:

Вот мой текущий код:
String IP = "172.29.75.43:61616";
            String QueuesNameESF = "queue://MES2WMSTVOFFLINE";
            try
            {
                Uri _uri = new Uri(String.Concat("activemq:tcp://" + IP));
                IConnectionFactory factory = new ConnectionFactory(_uri);
                using (IConnection conn = factory.CreateConnection())
                {
                    using (ISession session = conn.CreateSession())
                    {
                        IDestination destination = SessionUtil.GetDestination(session, QueuesNameESF);
                        using (IMessageProducer producer = session.CreateProducer(destination))
                        {
                            SqlConnection dbConnection = new SqlConnection("Integrated Security=false;Data Source=smxsql08svr01;initial catalog=BSS;user id=sa;password=newshamu;Max Pool Size=75000");
                            SqlConnection internalConnection = new SqlConnection("Integrated Security=false;Data Source=smxsql08svr01;initial catalog=BSS;user id=sa;password=newshamu;Max Pool Size=75000");
                            String SearchPallet;
                            SqlCommand cmd = new SqlCommand();
                            dbConnection.Open();

                            SearchPallet = "";
                            SearchPallet = "Select Replace(Replace(Replace((Convert(varchar,GETDATE(),120) + Palletnum),'-',''),' ',''),':','')  as 'ID', ";
                            SearchPallet += "'Y' as 'beFull','ZJ' as 'ext1','' as 'ext2','Y'as 'isCM',Part_Number as 'itemCode',linea as 'line',";
                            SearchPallet += "Case When len(Part_Number) = 12 then RIGHT(Part_Number,7) else RIGHT(Part_Number,8) end as 'lot',";
                            SearchPallet += "Palletnum as 'mainPallet',GETDATE() as 'sendTime','BSS' as'sender','8170' as'werks' From Finishgoods ";
                            //Remove if not test
                            SearchPallet += "Where PalletNum = @Palletnum GROUP by PalletNum,Part_Number,linea";
                            cmd.CommandText = SearchPallet;
                            cmd.Connection = dbConnection;
                            cmd.Parameters.Add("@Palletnum", SqlDbType.VarChar).Value = "PT01929734";//Pallet;//"PT01929734";
                            SqlDataReader rdr = cmd.ExecuteReader();
                            FirstLevel product = new FirstLevel();
                            if (rdr.Read())
                            {
                                //FirstLevel product = new FirstLevel();
                                product.guid = rdr.GetValue(0).ToString();
                                product.beFull = rdr.GetValue(1).ToString();
                                SecondLevel msg = new SecondLevel();
                                msg.carton = rdr.GetValue(8).ToString();
                                List<ThirdLevel> serials = new List<ThirdLevel>();

                                ThirdLevel sn = new ThirdLevel();
                                String SearchSN = "Select barcodenum as 'serNo',''as 'ext1',''as 'ext2' From Finishgoods where palletnum = @palletnum";
                                SqlCommand cmd_sn = new SqlCommand();
                                internalConnection.Open();
                                cmd_sn.Connection = internalConnection;
                                cmd_sn.CommandText = SearchSN;
                                cmd_sn.Parameters.Add("@Palletnum", SqlDbType.VarChar).Value = "PT01929734";
                                SqlDataReader rdr_sn = cmd_sn.ExecuteReader();
                                while (rdr_sn.Read())
                                {
                                    sn.serNo = rdr_sn.GetValue(0).ToString();
                                    sn.ext1 = rdr_sn.GetValue(1).ToString();
                                    sn.ext2 = rdr_sn.GetValue(2).ToString();
                                    serials.Add(sn);
                                }
                                rdr_sn.Close();
                                cmd_sn.Parameters.Clear();
                                cmd_sn.Dispose();
                                internalConnection.Close();
                                msg.serNoMsg = serials;
                                product.crtonMsg = msg;
                                product.ext1 = rdr.GetValue(2).ToString();
                                product.ext2 = rdr.GetValue(3).ToString();
                                product.isCM = rdr.GetValue(4).ToString();
                                product.itemCode = rdr.GetValue(5).ToString();
                                product.line = rdr.GetValue(6).ToString();
                                product.lot = rdr.GetValue(7).ToString();
                                product.mainPallet = rdr.GetValue(8).ToString();
                                product.sendTime = rdr.GetValue(9).ToString();
                                product.sender = rdr.GetValue(10).ToString();
                                product.werks = rdr.GetValue(11).ToString();
                            }
                            rdr.Close();
                            string json_ = JsonConvert.SerializeObject(product);
                            var json = JToken.Parse(json_);
                            conn.Start();
                            ITextMessage request = session.CreateTextMessage(json); //Here I need to send the JSON
                            producer.Send(request);
                        }
                        Console.WriteLine("send succeed");
                        Console.ReadLine();
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("Receive Failed");
                Console.ReadLine();
            }

0 Ответов