簡體   English   中英

在JMS / MQ升級大小寫問題之后,使用JMSCorrelationID接收消息不起作用

[英]Message receiving with JMSCorrelationID not working after JMS/ MQ Upgrade upper- & lower- case issue

上下文

我們在Java / Spring應用程序和Mainframe應用程序之間有非常特定的基於IBM MQ系列的通信。 我將所有這些信息(例如如何在IMS Bridge中釋放MQMD)抽象為一個與JMS / MQ有關的問題。

當使用JMS規范1.x和IBM MQ 7.5x時,我們可以完美地關聯JMSCorrelationID ,因為String看起來像ID:F5F5F0F1F5F1404040404040404040404040404040404040 ,在ID:部分之后是IBM 500(ebcdic)編碼的HEX字符串。

升級

在Java的系統端,我們升級了:

  • JMS規范1.x到2.0
  • IBM MQ 7.5.x驅動程序到9.0.2.0
  • 新的隊列管理器支持IBM MQ 9.0.2.0

而在大型機方面,我們什么也沒做。 現在,由於此升級,只要String的表示形式為大寫,就不會收到消息。

問題摘要

我們有與IT19225中描述的問題完全相同的問題:使用帶有大寫字母的選擇器的MQ-JMS隊列瀏覽器JMSCORRELATIONID找不到消息 ,唯一的問題是我們在IBM MQ 9.0.2.0上解決了上述問題。

**示例**因此,當嘗試接收看起來像ID:F5F5F0F1F5F1404040404040404040404040404040404040JMSCorrelationID (實際上是小寫還是大寫表示無關)時,會發生以下情況:

當字符串表示形式為小寫時,將不會接收帶有MQ CorrelId為大寫字符串表示形式的消息的消息( ID:f5f5f0f1f5f1404040404040404040404040404040404040"

我試過的

  • 接收時將JMSCorrelationID更改為小寫
  • 接收時將JMSCorrelationID更改為大寫
  • 將消息手動輸入到隊列中,結果是

小寫的MQ CorrelId會被接收,而大寫的MQ CorrelId則不會被接收。

  • 當前試圖繞過整個“ JMS / MQ驅動程序”魔術,並以某種方式將相關性ID作為字節數組注入到MQ端上。

任何幫助將不勝感激,因為我驚呆了,我根本找不到與谷歌這樣的問題(除了已修復的錯誤...)

簡短答案:如果APAR描述適合您所需要的問題,則需要升級到MQ v9.0.3 CD,有關更多詳細信息,請參見下面的我的較長更新。


關於IBM MQ版本號的一些注意事項:

在MQ v9.0和更高版本中,IBM將發行版分為兩個流。 長期支持(LTS)和連續交付(CD)。 LTS版本將具有第四個數字更改的版本,例如9.0.0.2,而CD版本將具有第三個數字更改的版本,例如9.0.2。

對於v9.0 CD,IBM將在MQ的主要發行版(例如9.0)有效期內為LTS版本提供缺陷支持。IBM最初表示,缺陷修復和安全更新僅適用於兩個最新的CD更新。 最終的9.0 CD版本是9.0.5,因此它們只支持9.0.4和9.0.5。 但是,隨着9.1 CD的發布,他們更新了此支持聲明( 追溯9.0 ,指出“對CD發行版的缺陷支持自該發行版可用之日起12個月內可用,或者仍是兩個最新CD發行版之一, “ 9.0.2已於2017年3月17日發布,並且不是最近的CD發行版將不再有資格獲得IBM缺陷支持的兩個條件之一。9.0.3已於2017年5月30日發布。因此,根據原始的支持聲明或新的支持聲明,在這一點上,直到v9.0支持結束為止,IBM將支持的CD發行版分別是9.0.4和9.0.5,該發行版的最后兩個發行版。 v9.0 CD。


在您的問題中,您說您使用的是v9.0.2(CD),而不是9.0.0.2(LTS)。 您提到的APAR指出它已在9.0.0.2 LTS中修復。 盡管APAR頁面沒有提到它已被固定在CD版本中,但自9.0.0.2是2017年10月5日發行以來,這很奇怪,我注意到9.0.4 CD已於2017年11月6日發行,而9.0.5 CD已於3月16日發行。 2018年。我過去曾指出,IBM在每個已發布的APAR上列出的計划發行日期以及與每個發行版的修訂列表進行比較時通常都不准確。 我檢查了9.0 CD 修復列表頁面,可以看到它指出APAR IT19225已在9.0.3 CD中修復。

由於這是一個客戶端問題,因此沒有理由無法更新到最新的9.0.5 jar文件來獲得此修復程序,盡管您應該通知MQ支持團隊他們正在隊列管理器上使用支持版本之外的版本。 您可以從MQ v9.0客戶端下載頁面下載Java-ALL自解壓jar文件: MQC9:IBM MQ V9客戶端 請注意,由於它們不再受支持,它們甚至沒有列出要下載的9.0.3及更早版本。


我個人的建議:

如果要繼續使用v9.0,則最好至少在客戶端上使用9.0 LTS版本(當前版本為9.0.0.4,也可以從上面的客戶端下載鏈接獲得)。

我的理由:

  • CD發行流附帶的主要原因是要利用IBM在這些發行版中添加的新功能。
  • CD每隔幾個月發布一次,但最終在大約2年后,IBM將所有新的CD功能推入新的LTS版本中。 這發生在2018年7月23日發布v9.1時,將不再有v9.0 CD版本發布,因為這些版本將針對最新版本9.1完成,ex 9.1.1將在某些時候推出新功能。
  • 9.0.5是最新的v9.0 CD版本。
  • IBM已於2016年6月2日發布了v9.0,IBM聲明至少要在五年后才宣布終止支持,但他們通常對此略有保留。 v8.0於2014年6月13日發布,EOS是2020年4月30日。v7.1 / v7.5 / v8.0的EOS日期均為4月30日,因此,按照最近的模式,我猜測9.0將在4月停止支持。 2022年30月30日。
  • 我不記得在任何9.0 CD發行版中都宣布了對JMS的IBM MQ類的任何重大增強,因此您不會丟失任何遷移到LTS發行版的功能(您可以通過知識中心的列表進行仔細檢查: 9.0.x版持續交付中的新增功能和更改
  • 您將獲得更好的支持,因為將繼續發布9.0 LTS版本,其中已包含已確定的缺陷(APARS)的修復程序,直到EOS為止。
  • 如果使用9.0.5,則如果發現任何其他缺陷,則需要去IBM申請IFIX才能適用於9.0.5,這也僅適用於與IBM簽訂了支持合同的公司(不確定您的情況)但我發現有些情況下有人支持連接到另一家公司的隊列管理器的客戶端應用程序,因此他們實際上與IBM沒有支持關系。
  • 在隊列管理器方面,如果您不使用添加到9.0.1或9.0.2中的任何新隊列管理器功能,則建議您做同樣的事情。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM