2014-09-30 131 views
0

我正在偵聽隊列,當郵件發佈到隊列中時,我的偵聽器類將偵聽郵件並且必須處理郵件。javax.jms.TextMessage - 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()); 
    } 
} 

我得到的值作爲空。即使'evnt_code'屬性存在於標籤和文本消息中。

對此的幫助非常感謝。提前致謝。

回答

0

發佈的消息(在EMS上發佈的有效負載)不是正確的XML。 您可以發佈實際的消息載荷,因爲您在使用Gems的EMS隊列或主題中看到它?

如果消息不正確,又稱消息的有效負載不正確xml解析器將永遠找不到子元素,並且在上述情況下將返回null屬性列表是「textMessage」的子元素,但它不清楚這個xml文檔的根源是什麼。

0

您只需將目標客戶端設置爲Websphere MQ服務器上的隊列屬性中的JMS