Ibm mq 如何在java中计算IBM MQ的进出时间

Ibm mq 如何在java中计算IBM MQ的进出时间,ibm-mq,Ibm Mq,我在写入MQ之前调用Date对象。这就是我在MQ时代捕获的方式。如何计算MQ的超时时间?最简单的解决方案是获得MQ消息跟踪解决方案。有很多可供选择,您可以在此处找到列表: COA是到达确认-当消息被放入目标队列时 COD是交付确认-当接收应用程序执行MQGET时 为您的问题创建COA/COD解决方案并不困难或复杂。当我还是使用MQ的COA/COD的顾问时,我为客户创建了许多SLA解决方案 如果消息保持在同一队列管理器中,那么生活就非常简单。如果不是,那么您需要知道COD消息not COA是使用原

我在写入MQ之前调用Date对象。这就是我在MQ时代捕获的方式。如何计算MQ的超时时间?

最简单的解决方案是获得MQ消息跟踪解决方案。有很多可供选择,您可以在此处找到列表:

COA是到达确认-当消息被放入目标队列时 COD是交付确认-当接收应用程序执行MQGET时 为您的问题创建COA/COD解决方案并不困难或复杂。当我还是使用MQ的COA/COD的顾问时,我为客户创建了许多SLA解决方案

如果消息保持在同一队列管理器中,那么生活就非常简单。如果不是,那么您需要知道COD消息not COA是使用原始消息的UserId返回的。因此,您需要计划拥有正确的安全权限,否则COD消息将进入DLQ死信队列

为自己找到一个要使用的数据库——它可以是您公司的数据库,也可以是像SQLite、H2等简单的数据库

人们问的第一个问题是如何把一切联系在一起。i、 什么钥匙。简单地说,使用MQMD消息ID。当应用程序执行MQPUT时,将填充MQMD消息ID

其次,确保原始消息已完成以下MQMD字段:replyToQueueName、replyToQueueManagerName和report

第三,COA和COD消息的MQMD CorrelId字段中将包含原始消息的MessageId

您可以使用3或4个时间戳。额外的时间戳可以是执行MQPUT之前的时间。假设您想要4个时间戳:

MQPUT之前的时间戳

MQMD的putDateTime中从MQPUT返回的时间戳

MQMD的putDateTime中返回的COA时间戳-匹配的MessageId为CorrelId MQMD的putDateTime匹配MessageId中返回的COD时间戳位于CorrelId中 简单。现在,数据库中的每一行都有该消息历史的完整SLA记录。您可以编写简单的SQL来确定:

MQ传递消息(即时间戳4减)所用的时间 时间戳1或2 在接收应用程序接收它之前,它在队列中停留了多长时间,即时间戳4减去时间戳3-当有人指责时,这是一个重要的数字!!! 当有人说“我们从来没有收到你的信息”时,时间戳4就是你的证明
最后,如果假设原始MessageId位于CorrelId中,那么您可以将该时间戳作为第5个时间戳添加到DB中,以期望返回响应消息。i、 e.时间戳5减去时间戳1或2将给出往返时间请求响应。

您所说的超时是什么意思?您是指PUT完成且MQ未返回异常的时间,还是指将读取消息的应用程序接收消息的时间?@JoshMc我指的是应用程序接收消息的时间,例如FlumeCan,接收应用程序记录类似的超时时间收到消息的呼叫日期?如果您希望发送应用程序在这段时间内具有返回确认消息,那么最好将返回确认消息从接收应用程序发送回发送应用程序,我建议远离COD消息,但这也是另一种选择。我不确定接收部分,我知道它使用flume,但我并不清楚。