繁体   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