【问题标题】:MQ messaging architecture for managing rejected messages用于管理被拒绝消息的 MQ 消息传递体系结构
【发布时间】:2016-03-29 15:24:36
【问题描述】:

我在 2x 方法来管理 MQ 客户端上的消息拒绝之间做出决定时遇到了一些困难。诚然,这更像是一种意识形态论点,而不是技术论点。

考虑一下:队列上的消息 (XML) 由客户端读取。客户端在进一步处理之前检查数字签名(以及,通过扩展,消息是否符合特定模式)。假设数字签名的验证失败了。我不希望进一步处理该消息。它需要回到源头并“手工”整理出来。

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

选项 1

  • 客户端读取消息
  • 客户确认收货
  • 客户端发现消息在某种程度上无效
  • 客户端将无效消息写入“拒绝”队列

                      CLIENT   MQ CLIENT
                       READ    +-------+        +----+ 
       OUT Q | --- | --------> |PROCESS| -----> |NEXT| 
             | --- |           |MESSAGE|        |STEP| 
             +-----+           +-------+        +----+ 
                                   | 
                                   | 
    REJECT Q | --- | <-------------+ 
             | --- |     FAILURE
             +-----+
    

选项 2

  • 客户端读取消息
  • 客户端发现消息在某种程度上无效
  • 客户端不确认收到消息
  • MRRTY = 0 (?) 所以 QM 将消息写入拒绝 Q

                       CLIENT   MQ CLIENT
                        READ    +-------+        +----+
       OUT Q  | --- | --------> |PROCESS| -----> |NEXT|
              | --- | <-------- |MESSAGE|        |STEP|
              +-----+  FAILURE  +-------+        +----+
                 |
                 |
                 V
    REJECT Q  | --- |
              | --- |
              +-----+
    

我偏向于选项 2,其中 QM 负责将失败的消息写入拒绝队列,因为在我看来这是一个更简洁的解决方案。这也意味着与客户的通信仅在一个方向上。我了解 CLIENT_ACKNOWLEDGE 用于接收所有消息直到确认点:我是否误以为 ACKing per-message 将是允许我将 QM 写入失败消息发送到每个 MRRTY 参数被拒绝的 Q 的机制?

非常感谢任何关于标准模式/架构的意见/讨论。

【问题讨论】:

  • 你能解释一下MRRTY是什么吗?
  • 我认为第一个解决方案更干净,应用程序应该处理应用程序错误,格式错误的消息是应用程序错误。队列管理器应该只处理传输错误。
  • 顺便说一句,我不认为您使用的是 IBM WebSphere MQ,是吗?它没有 MRRTY 选项,当然也没有路由失败消息的机制。您应该指定您正在使用的 MQ。
  • MRRTY 确实存在于 WebSphere MQ 中,它是通道上消息重试的计数。与消息重试计时器 MRTMR 齐头并进。这仅适用于接收器类型的通道,不适用于客户端-服务器通道,
  • 选项 1 是一种选择。没有让队列管理器将失败的消息路由到侧队列的机制。这是应用程序的责任。

标签: ibm-mq mq


【解决方案1】:

感谢Morag 和Attila 的帮助和意见。

归根结底是这样的:

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

还有这个……

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

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

【讨论】:

    猜你喜欢
    • 2020-05-15
    • 2017-02-12
    • 2017-01-25
    • 2017-12-29
    • 1970-01-01
    • 2016-10-20
    • 1970-01-01
    • 2011-11-10
    • 2012-03-06
    相关资源
    最近更新 更多