我在管理MQ客户端上的消息拒绝的2x方法之间遇到了一些困难。不可否认,它更像是一种意识形态论证,而不是技术论证。
考虑这一点:客户端读取队列上的消息(XML)。在进一步处理之前,客户端检查数字签名(并且,通过扩展,检查消息是否遵循某个模式)。但是,我们说数字签名的验证失败了。我不希望邮件得到进一步处理。它需要回到源头并手动整理出来。
据我所知,我可以采取2x方法:
选项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用于接收到达确认点之前的所有消息:我是否误以为每个消息的确认将是允许我将QM写入失败的消息发送到被拒绝的每个MRRTY参数Q的机制?
任何意见/讨论都很重视标准模式/架构。