Разбор сообщений IBM MQ Event Monitoring по местному времени - PullRequest
0 голосов
/ 06 сентября 2018

Я использую предоставленную IBM программу-пример amqsevt для мониторинга очередей событий MQ и анализа сообщений. Но я заметил, что по умолчанию время создания события представлено во времени по Гринвичу. Я хотел бы преобразовать его в системное местное время. Есть ли способ сделать это?

**** Message #1 (120 Bytes) on Queue SYSTEM.ADMIN.CHANNEL.EVENT ****
Event Type                       : Channel Event [46]
Reason                           : Channel Stopped By User [2279]
Event created                    : 2018/09/04 20:17:39.48 GMT

1 Ответ

0 голосов
/ 07 сентября 2018

Источник для примера можно найти в Linux с MQ, установленным в /opt/mqm в /opt/mqm/samp/amqsevta.c.

В MQMD (дескриптор сообщения) каждого сообщения есть поля PutDate и PutTime, которые всегда хранятся в GMT и представляют собой простые 8-значные строки, например:

  • PutDate: 20180904 (ГГГГММДД)
  • PutTime: 20173948 (ЧЧММССС)

В примере программы он просто преобразует это в отображаемый формат 2018/09/04 20:17:39.48 и добавляет GMT в конец, поскольку знает, что это всегда в GMT.

  /**********************************************************/
  /* Timestamp is read from the MQMD - it is always in GMT  */
  /* regardless of local timezone. Do not want to try to    */
  /* convert it, because this machine may be a client in a  */
  /* different timezone than the server generating the      */
  /* event. So stick to GMT (or UCT if you prefer).         */
  /**********************************************************/
  sprintf(valbuf,"%4.4s/%2.2s/%2.2s %2.2s:%2.2s:%2.2s.%2.2s GMT",
     &pMsgDesc->PutDate[0],
     &pMsgDesc->PutDate[4],
     &pMsgDesc->PutDate[6],
     &pMsgDesc->PutTime[0],
     &pMsgDesc->PutTime[2],
     &pMsgDesc->PutTime[4],
     &pMsgDesc->PutTime[6]);
  printLine(offset,"Event created",valbuf);

Похоже, вы могли бы использовать функцию c strptime, чтобы проанализировать строку в метку времени эпохи, а затем распечатать ее в вашем местном часовом поясе.

...