java.lang.RuntimeException: wXb6Vnl31u :: Ошибка для HTML= 001 003 004 005 006 007 008 009
010

IN Migration Kafka концепт

011 012

Каким образом производиться миграций через кафку?

013 014

Миграция через кафку производиться таким способом, что в кафке 015 создаётся топик с каким-то названием которого не встречается в 016 кафке на данный момент, далее в этот топик скидываются данные 017 различных Бизнес Объектов(БО) в виде строк, которые содержит в себе 018 JSON определенного ниже описанного формата, дальше этот топик 019 регистрируется в системе и после регистраций в системе, система 020 обращается в данный топик и начинает загружать данные в себе базу 021 данных.

022 023

Здесь описано 024 это детальней.

025 026

Структура JSON, каким оно должно быть.

027 028

Структура JSON должен соответствовать ниже приведённому 029 примеру.

030 031
032  {
033  "recordId": "12345",
034  "externalId": "bfsseVCjGC225bM@",
035  "id": "dgL9~4keReK7Z1qi",
036  "boCode": "BO",
037  "fields": [
038      {
039      "code": "textField",
040      "apiValue": "someValue"
041      },
042      {
043      "code": "textField2",
044      "apiValue": "someValue2"
045      }
046  ],
047  "boFields": [
048      {
049          "fieldCode": "boTextField",
050          "toBoCode": "BO2",
051          "toFieldCode": "textFieldOfBO2",
052          "apiValue": "015252634519"
053      },
054      {
055          "fieldCode": "boTextField",
056          "boiInput": {
057              "recordId": "12345",
058              "externalId": "bfsseVCjGC225bM@",
059              "id": "dgL9~4keReK7Z1qi",
060              "boCode": "BO",
061              "fields": [
062              {
063                  "code": "textField",
064                  "apiValue": "someValue"
065              },
066              {
067                  "code": "textField2",
068                  "apiValue": "someValue2"
069              }
070              ],
071              "boFields": {...}
072          }
073      }
074  ],
075  "state": "ACTUAL"
076  }
077  
078  
079  
080  
081 082
083

Подробнее о полях

084 085
086  recordId:Строка   - Идентификатор данной записи, он должен быть уникальным в рамках всего топика 
087                      он используется для того чтобы запись обрабатывалась всего одни раз его затем,
088                      система его запоминает и при повторной записи система его игнорирует.  
089  
090  id:Строка         - Идентификатор инстанции бизнес-объекта внутренний для платформы MyBPM. Если он указан, то
091                      ищется запись по этому идентификатору. Если находиться, то происходит обновление данных.
092                      Иначе генерируется ошибка. Если этот идентификатор не указан, то используется идентификатор
093                      externalId
094  
095  externalId:Строка - Идентификатор инстанции БО, который используется во внешней системе (которая поставляет данные).
096                      Если внутренний идентификатор не используется, то используется данный идентификатор для поиска
097                      инстанции. В таком случае если инстанция находиться, то происходит обновление данных. Если не
098                      находиться, то создаётся новая инстанция.
099  
100  boCode:Строка     - Код бизнес объекта в которой, должны записаться данные.
101  
102  fields:Массив     - Поля со значениями для мигрированния .
103      code:Строка        - Код поля в бизнес объекте .
104      apiValue:Строка    - Значение из REST API.
105  
106  boFields:Массив   - Бизнес-поля для миграции вложенных бизнес-объектов 
107      Стандартный подход:{
108          fieldCode:Строка   - Код поля, который принадлежит с кодом boCode.
109          toBoCode:Строка    - Код бизнес объекта на которое указывает данное поле.
110          toFieldCode:Строка - Код поля у бизнес объекта toBoCode. Это поле должно быть уникальное 
111          apiValue:Строка    - Значение поле toFieldCode у бизнес объекта с кодом toBoCode.
112      }
113      Рекурсивный подход:{
114          fieldCode:Строка   - Код поля, который принадлежит с кодом boCode.
115          boiInput:Строка    - вложенный JSON другого BoiInput. 
116      }
117  
118  state - Состояние записи могут быть (ACTUAL, REMOVED, ARCHIVED, TEST), может отсутствовать, 
119          если записи нету то state станет ACTUAL, а если запись есть то ничего не измениться 
120      ACTUAL:Строка      - Это актуальная запись которая доступна для работы.
121      REMOVED:Строка     - Удалённая запись.
122      ARCHIVED:Строка    - Архивированная запись.
123      TEST:Строка        - Запись предназначена для режима тестирования  
124  
125  
126  
127  
128 129 137
138 139 at kz.greetgo.md_reader.util.MdUtil.xmlTextToDoc(MdUtil.java:80) at kz.greetgo.md_reader.core.MdConverter.prepareHtmlFileFrom(MdConverter.java:136) at kz.greetgo.md_reader.core.MdConverter.convert(MdConverter.java:208) at kz.greetgo.md_reader.controller.RenderController.downloadToc(RenderController.java:360) at kz.greetgo.md_reader.controller.RenderController.request(RenderController.java:108) at jdk.internal.reflect.GeneratedMethodAccessor9.invoke(Unknown Source) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:568) at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:207) at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:152) at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:884) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:797) at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1081) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:974) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1011) at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903) at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:564) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:205) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) at kz.greetgo.md_reader.interceptors.TextReplaceFilter.doFilter(TextReplaceFilter.java:36) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:166) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:341) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:390) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:894) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1741) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.base/java.lang.Thread.run(Thread.java:833) Caused by: java.io.IOException: Server returned HTTP response code: 429 for URL: http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:2000) at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1589) at java.xml/com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:677) at java.xml/com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startEntity(XMLEntityManager.java:1397) at java.xml/com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startEntity(XMLEntityManager.java:1333) at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDTDScannerImpl.startPE(XMLDTDScannerImpl.java:732) at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDTDScannerImpl.skipSeparator(XMLDTDScannerImpl.java:2101) at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDTDScannerImpl.scanDecls(XMLDTDScannerImpl.java:2064) at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDTDScannerImpl.scanDTDExternalSubset(XMLDTDScannerImpl.java:299) at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.dispatch(XMLDocumentScannerImpl.java:1165) at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.next(XMLDocumentScannerImpl.java:1040) at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:943) at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:605) at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:542) at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:889) at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:825) at java.xml/com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141) at java.xml/com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:247) at java.xml/com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:342) at java.xml/javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:122) at kz.greetgo.md_reader.util.MdUtil.xmlTextToDoc(MdUtil.java:71) ... 48 more