假设我有一个由MQ队列提供的应用程序。当应用程序收到包含错误的消息时,应用程序本身会将收到的消息推送到某个无效的消息队列。
我的问题是:建议的方法是让接收应用程序将失败/拒绝原因附加到无效消息队列上推送的消息中?我想到了一些解决方案,但我不确定哪一个被认为是“最佳实践”:
答案 0 :(得分:3)
如果您需要的只是在邮件中放置原因代码,请将MQMD.Feedback
字段与standard reason codes之一一起使用。在WMQ v7.0或更高版本中,应用程序可以设置任意数量的message properties,然后使用JMS语义和本机WMQ API调用进行读取。您可以定义用于命名应用程序定义属性的分类法。
如果消息被重新排队到死信队列而不是应用程序拥有的退出队列,则习惯上会为其添加Dead Letter Header。 MQDLH
structure包含原因代码的字段,用于说明邮件重新排队的原因。通常,应用程序应避免使用DLQ来支持应用程序拥有的队列。当应用程序确实使用DLQ时,通常他们应该有权在那里放置消息,但不能从该队列中检索消息。这是因为它是一个系统范围的资源,来自不同应用程序的消息可能会落在那里。通常,管理员应用程序或具有提升访问权限的人员负责在系统DLQ上裁定和处理消息。