2014-09-30 6 views
0

대기열을 듣고 있습니다. 메시지가 대기열에 게시되면 수신 대기자 클래스가 메시지를 수신하고 처리해야합니다.javax.jms.TextMessage - null을 반환하는 getStringProperty()

리스너 구성이 좋으며 메시지를 수신 할 수 있습니다. 하지만 속성 중 하나의 값을 얻으려고하면 속성에 값이 있어도 null을 반환합니다.

첨부 코드와 처리 논리 코드를 참조하십시오. 처리

<textMessages> 
<textMessage timestamp="1410889863339"> 
    <property name="evnt_code" value="ID" /> 
    <property name="prev_cmdy_abrv" value="APOISN" /> 
    <text><![CDATA[<?xml version="1.0" encoding="UTF-8" standalone="no" ?><ceo_eqmt_msg version="1.1"><eqmt eqmt_nbr="902721" eqmt_init="UTLX" ceo_eqmt_id="56081806"><evnt_dtl><evnt evnt_id="19776586731" evnt_code="ID" stop_code="CU" in_out_stop_ind="O" evnt_dt="20140916124600" le_code="L" wb_nbr="161734" wb_date="20140911" evnt_stn_id="8578" evnt_crc7="B 649" evnt_tz="0" evnt_carr_abrv="CN" yard_bloc_id="CNGI" tcs_csn="1102243807" last_uptd_dt="20140916125101" upd_task_user_id="DAEI999" upd_task_id="=WO" upd_task_dt="20140916125100" match_plnd_ev_id="26624105732" phys_le_code="L" upd_src_sys_tla_code="TCS" upd_src_sys_proc_id="Q133703AEI" evnt_stop_desc_id="2059"/></evnt_dtl></eqmt></ceo_eqmt_msg>]]></text> 
</textMessage> 

public void onMessage(Message message) { 

    try {  
     TextMessage textMessage   = (TextMessage) message; 
     String stringProperty = textMessage.getStringProperty("evnt_code"); 
     } catch (JMSException ex) { 
     LOGGER.error("Error getting property: " + propertyName + " error: " + ex.getMessage()); 
    } 
} 

으로 나는 널 (null)로 값을 얻고있다. 'evnt_code'속성은 태그 안에 있고 텍스트 메시지 안에 존재한다.

이 문제에 대한 도움을 주시면 대단히 감사하겠습니다. 미리 감사드립니다.

답변

0

게시 된 메시지 (EMS에 게시 된 페이로드)는 적절한 XML이 아닙니다. 보석을 사용하여 EMS 대기열 또는 주제에서 실제 메시지 페이로드를 볼 때 게시 할 수 있습니까?

메시지가 올바르지 않은 경우 일명 메시지의 페이로드가 올바르지 않습니다. 파서는 하위 요소를 찾지 않으며 위의 경우 속성 목록이 "textMessage"의 자식이지만 null을 반환합니다. 이 xml 문서의 루트가 무엇인지 분명하지 않습니다.

0

Websphere MQ 서버의 대기열 등록 정보에서 대상 클라이언트를 JMS로 설정하기 만하면