Ibm mq 用于管理被拒绝消息的MQ消息传递体系结构

Ibm mq 用于管理被拒绝消息的MQ消息传递体系结构,ibm-mq,mq,Ibm Mq,Mq,在MQ客户机上管理消息拒绝的两种方法之间,我很难做出选择。诚然,这与其说是技术上的争论,不如说是意识形态上的争论 考虑一下:队列上的消息(XML)由客户机读取。在进一步处理之前,客户机检查数字签名(并进一步检查消息是否符合特定模式)。假设数字签名的验证失败了。我不想进一步处理这个消息。它需要回到源头,并“手工”进行分类 据我所知,我可以采取两种方法: 选项1 客户端读取消息 客户确认收到 客户端发现消息以某种方式无效 客户端将无效消息写入“拒绝”队列 CLI

在MQ客户机上管理消息拒绝的两种方法之间,我很难做出选择。诚然,这与其说是技术上的争论,不如说是意识形态上的争论

考虑一下:队列上的消息(XML)由客户机读取。在进一步处理之前,客户机检查数字签名(并进一步检查消息是否符合特定模式)。假设数字签名的验证失败了。我不想进一步处理这个消息。它需要回到源头,并“手工”进行分类

据我所知,我可以采取两种方法:

选项1

  • 客户端读取消息
  • 客户确认收到
  • 客户端发现消息以某种方式无效
  • 客户端将无效消息写入“拒绝”队列

                      CLIENT   MQ CLIENT
                       READ    +-------+        +----+ 
       OUT Q | --- | --------> |PROCESS| -----> |NEXT| 
             | --- |           |MESSAGE|        |STEP| 
             +-----+           +-------+        +----+ 
                                   | 
                                   | 
    REJECT Q | --- | <-------------+ 
             | --- |     FAILURE
             +-----+
    
    客户端MQ客户端
    读+------++-----+
    OUT Q——————————————————————————下一步
    |——| |信息| |步骤|
    +-----+           +-------+        +----+ 
    | 
    | 
    拒绝Q |--| | | |-->|下一步|
    |——|感谢双方以及他们的帮助和投入

    归根结底是这样的:

    应用程序应处理应用程序错误,格式错误的消息是应用程序错误。队列管理器应仅处理传输错误。()

    而这个

    没有让队列管理器将失败消息路由到侧队列的机制。这是应用程序的责任。()


    因此,在出现应用程序错误的情况下,客户端本身将被期望将失败/格式错误的消息写回带外的单独队列。

    请您解释一下MRRTY是什么?我认为第一种解决方案要干净得多,应用程序应该处理应用程序错误,格式错误的消息是应用程序错误。队列管理器应该只处理传输错误?它没有MRRTY选项,当然也没有路由失败消息的机制。您应该指定您正在使用的MQ。MRRTY确实存在于WebSphere MQ中,并且是通道上的消息重试次数。与MRTMR(消息重试计时器)密切相关。这仅适用于接收器类型通道,不适用于客户机-服务器通道,可选择选项1。没有让队列管理器将失败消息路由到侧队列的机制。这是应用程序的责任。
                       CLIENT   MQ CLIENT
                        READ    +-------+        +----+
       OUT Q  | --- | --------> |PROCESS| -----> |NEXT|
              | --- | <-------- |MESSAGE|        |STEP|
              +-----+  FAILURE  +-------+        +----+
                 |
                 |
                 V
    REJECT Q  | --- |
              | --- |
              +-----+