Я работаю на фондовых и биржевых рынках. У меня такая ситуация: мне нужно взять строку из журнала и преобразовать ее в объект типа «Сообщение». В соответствии с этой ссылкой я попытался использовать все три метода "MessageUtils "класс в JAVA. Но моя строка разделяется на объект типа класса Message с уникальными тегами. Но поскольку моя строка имеет тип «MarketDataIncrementalRefresh», я хочу, чтобы каждый тег присутствовал в сообщении.
Например: я предоставляю следующую строку методу «MessageUtils.parse()».
8=FIX.4.2|9=00795|35=W|49=TT_PRICE|56=SAP0094X|34=2392|52=20170623-04:41:33.375|55=CL|48=00A0HR00CLZ|10455=CLQ7|167= FUT|207=CME|15=USD|262=MDRQ-751|200=201708|18210=1|387=12292|268=24|269=0|290=1|270=4290|271=33|269= 0|290=2|270=4289|271=34|269=0|290=3|270=4288|271=40|269=0|290=4|270=4287|271=38|269=0| 290=5|270=4286|271=46|269=0|290=6|270=4285|271=53|269=0|290=7|270=4284|271=46|269=0|290= 8|270=4283|271=66|269=0|290=9|270=4282|271=48|269=0|290=10|270=4281|271=64|269=1|290=1| 270=4291|271=21|269=1|290=2|270=4292|271=40|269=1|290=3|270=4293|271=48|269=1|290=4|270= 4294|271=83|269=1|290=5|270=4295|271=62|269=1|290=6|270=4296|271=46|269=1|290=7|270=4297| 271=34|269=1|290=8|270=4298|271=55|269=1|290=9|270=4299|271=31|269=1|290=10|270=4300|271= 128|269=2|270=4291|271=1|269=4|270=4280|269=7|270=4292|269=8|270=4277|10=044|
Но я получаю следующее:
8=FIX.4.2|9=192|35=W|34=2|49=TT_PRICE|52=20170622-14:16:23,685|56=SAP0094X|15=USD|48=00A0HR00GCZ|55=GC|167= FUT|200=201708|207=CME|262=MDRQ-21|268=25|269=0|270=12510|271=24|290=1|387=121890|10455=GCQ7|18210=1|10= 036|
Как видите, в String присутствуют только уникальные теги. Но мне нужен каждый тег, независимо от того, сколько раз он существует в предоставленной строке.
Пожалуйста, помогите мне сделать это в JAVA. Это будет действительно заметно.
Ниже приведен код, который я использую для преобразования:
MessageUtils mu = new MessageUtils();
Session session = Session.lookupSession(sessionID);
Message msg = MessageUtils.parse(new DefaultMessageFactory(), null, str);
// Message msg = new Message(str, false); //This can also be used for converting
System.out.println(msg.toString());
SOH
на символ вертикальной черты (|
)? В нынешнем виде сообщение слишком сложно читать и интерпретировать (разделители полей невидимы). - person TT.   schedule 29.06.2017