wso2 esb json에 예약 된 전달 메시지 프로세서를 사용할 때 따옴표 및 대괄호가 누락 됨

파잠 바 탄자 데

esb 및 activemq를 통해 json 요청을 보내는 데 문제가 있습니다. 실제로 프록시를 사용하고 있으며 나머지 및 json 콘텐츠로 프록시를 호출합니다. 내 통합 흐름은 다음과 같습니다. 프록시 (우편 배달부 포함)를 호출하고 프록시가 jms 메시지 저장소에 요청 (json 콘텐츠 포함)을 보낸 다음 메시지 저장소에서 메시지를 사용하여 메시지를 전송하도록 예약 된 전달 메시지 프로세서를 정의했습니다. 정의 된 엔드 포인트 (.net 웹 API). 하지만 문제는 숫자가있는 문자열이 자동으로 정수 요소로 변환된다는 것입니다. "age": 100 (문자열 "age": "100"), 또 다른 문제는 json의 단일 요소 배열이 json의 문자열 속성으로 변경된다는 것입니다. "list": [ "salam"] "list": "salam"으로 변경,질문 , 내 axis2.xml 파일을 업데이트하고 그가 말한 것처럼 JsonStreamFormatter 및 JsonStreamBuilder를 추가했지만 아무 일도 일어나지 않았습니다.

내 프록시는 다음과 같습니다.

<?xml version="1.0" encoding="UTF-8"?>
    <proxy xmlns="http://ws.apache.org/ns/synapse"
       name="myProxy"
       transports="https,http"
       statistics="disable"
       trace="disable"
       startOnLoad="true">
   <target>
      <inSequence>
         <log level="full"/>
         <property name="FORCE_SC_ACCEPTED" value="true" scope="axis2"/>
         <property name="OUT_ONLY" value="true"/>
         <property name="messageType" value="application/json" scope="axis2"/>
         <store messageStore="myProxyMS"/>
      </inSequence>
   </target>
   <description/>
</proxy>

그리고 내 jms 메시지 저장소 :

<messageStore name="myProxyMS" class="org.apache.synapse.message.store.impl.jms.JmsStore" xmlns="http://ws.apache.org/ns/synapse">
   <parameter name="java.naming.factory.initial">org.apache.activemq.jndi.ActiveMQInitialContextFactory</parameter>
   <parameter name="java.naming.provider.url">tcp://localhost:61616</parameter>
   <parameter name="store.jms.username">admin</parameter>
   <parameter name="store.jms.password">admin</parameter>
   <parameter name="store.jms.JMSSpecVersion">1.1</parameter>
   <parameter name="store.producer.guaranteed.delivery.enable">false</parameter>
   <parameter name="store.failover.message.store.name">InfoGetMobileIndMS</parameter>
</messageStore>

및 예약 된 전달 메시지 프로세서 :

<messageProcessor name="myProxyMP" class="org.apache.synapse.message.processor.impl.forwarder.ScheduledMessageForwardingProcessor" targetEndpoint="aspnet" messageStore="myProxyMS" xmlns="http://ws.apache.org/ns/synapse">
   <parameter name="interval">1000</parameter>
   <parameter name="client.retry.interval">1000</parameter>
   <parameter name="max.delivery.attempts">4</parameter>
   <parameter name="is.active">true</parameter>
   <parameter name="max.delivery.drop">Enabled</parameter>
   <parameter name="member.count">1</parameter>
</messageProcessor>

Postman json 요청 :

{
    "name" : "farzam",
    "lastname" : "vatanzadeh",
    "age" : "1000",
    "nested" : {
        "id" : "cd12334dasc",
        "group" : "asd",
        "list" : ["salam"]
    }
}

여기에 이미지 설명 입력

그리고 내 .NET API

 [HttpPost]
    [Route("proxy")]
    [Test]
    public HttpResponseMessage Proxy(TempViewModel model)
    {
        return Request.CreateResponse(HttpStatusCode.Accepted);
    }
    public class TempViewModel
    {
        public string name { get; set; }
        public string lastname { get; set; }
        public string age { get; set; }
        public Nested nested { get; set; }
    }
    public class Nested
    {
        public string id { get; set; }
        public string group { get; set; }
        public List<string> list { get; set; }
    }

메시지 프로세서에서 내 API로 보내는 http 게시물 요청을 포착하여 콘텐츠를 열기 위해 actionFilter 속성을 정의했습니다. 내 Json 요청은 다음과 같습니다.

{
    "name":"farzam",
    "lastname":"vatanzadeh",
    "age":1000,
    "nested":{
        "id":"cd12334dasc",
        "group":"asd",
        "list":"salam"
    }
}

이 문제로 10 일 이상 고생하고 있습니다. WSO2 엔지니어가 문제 해결을 도와 주면 정말 감사하겠습니다.

라빈 드라 란 왈라

이는 ESB 내부에서 사용되는 STAXON 메시지 포맷터로 인해 발생합니다. 어쨌든 나는 이것이 샘플링 메시지 프로세서에서 잘 작동한다는 주장을 믿을 수 없습니다. 전달 및 샘플링 메시지 프로세서 모두 동일한 포맷터를 사용하기 때문입니다. 메시지 형식을 지정할 때 목록에 하나의 요소가 있으면 하나의 요소로 표시됩니다. 그러나 목록에 여러 요소가있는 경우 목록으로 표시됩니다. 이를 위해 우리는 프로덕션 고객에게 패치를 발행했습니다. 안타깝게도 이와 같은 공개 포럼에서는 패치를 발행 할 수 없습니다. 이와 같은 해결 방법이 필요한 경우 WSO2에서 프로덕션 지원을 받으십시오.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관