在远程MQ

当我将应用程序部署到远程IBM MQ时。然后,我看到该userID更改为我的PC的用户。我设置了userID = prod,但在日志(从远程MQ获取日志)中看到,该userID = ps(ps-我的PC的用户)。 但是,如果该应用是在本地启动的,则不会出现此问题。

我使用ubuntu,docker,Kubernetes,node.js。 我将userID放入代码中,但是我应该通过Docker配置它吗? 还是应该更改conf以解决此问题?

("use strict");
const mq = require("ibmmq");
const fs = require("fs");
const logger = require("../config/logerConfig");
const MQC = mq.MQC;

const StringDecoder = require("string_decoder").StringDecoder;
const decoder = new StringDecoder("utf8");

function ToMQ() {
  const qMgr = "queueManagerName";
  const qName = "queueName";
  const connName = "somehost";

  let queueHandle;

  const cno = new mq.MQCNO();
  const sco = new mq.MQSCO();
  const csp = new mq.MQCSP();
  const cd = new mq.MQCD();
  csp.UserId = "prod";
  csp.Password = "";
  cno.SecurityParms = csp;
  cno.Options |= MQC.MQCNO_CLIENT_BINDING;
  cd.ConnectionName = connName;
  cd.ChannelName = "channelName";
  //cd.SSLCipherSpec = "TLS_RSA_WITH_AES_128_CBC_SHA256";
  cd.SSLClientAuth = MQC.MQSCA_OPTIONAL;
  cno.ClientConn = cd;
  cno.SSLConfig = sco;

  mq.setTuningParameters({
    syncMQICompat: true
  });

  mq.Connx(qMgr,cno,function(err,hConn) {
    if (err) {
      logger.errorLogger().error("Failed to connect to MQ!");
    } else {
      logger.serverLogger().info(`Connection successful`);

      const od = new mq.MQOD();
      od.objectname = qName;
      od.ObjectType = MQC.MQOT_Q;
      const openOptions = MQC.MQOO_BROWSE;
      mq.Open(hConn,od,openOptions,hObj) {
        queueHandle = hObj;
        if (err) {
          logger.errorLogger().error(err.message);
        } else {
          getMessages();
        }
      });
    }
  });
}

function formatErr(err) {
  if (err) {
    ok = false;
    return "MQ call failed at " + err.message;
  } else {
    return "MQ call successful";
  }
}

function getMessages() {
  const md = new mq.MQMD();
  const gmo = new mq.MQGMO();

  gmo.Options =
    MQC.MQGMO_NO_SYNCPOINT |
    MQC.MQGMO_MQWI_UNLIMITED |
    MQC.MQGMO_CONVERT |
    MQC.MQGMO_FAIL_IF_QUIESCING;
  gmo.Options |= MQC.MQGMO_BROWSE_FIRST;

  gmo.MatchOptions = MQC.MQMO_NONE;

  mq.setTuningParameters({
    getLoopPollTimeMs: 500
  });
  mq.Get(queueHandle,md,gmo,getcB);
}

function getcB(err,hObj,buf,hConn) {
  if (err) {
    if (err.mqrc == MQC.MQRC_NO_MSG_AVAILABLE) {
      logger.serverLogger().info("No more messages available.");
    } else {
      logger.errorLogger().error(formatErr(err.message));
      exitCode = 1;
    }
    ok = false;
    mq.GetDone(hObj);
  } else {
    if (md.Format == "MQSTR") {
      const message = decoder.write(buf);
      const metaJSON = getMetaJson(message);
      try {
        fs.writeFileSync(
          .... process
        );
        logger.serverLogger().info(message);
      } catch (e) {
        logger.errorLogger().error("Cannot write file ",e.message);
      }
    } else {
      logger.serverLogger().info("binary message: " + buf);
    }
    gmo.Options &= ~MQC.MQGMO_BROWSE_FIRST;
    gmo.Options |= MQC.MQGMO_BROWSE_NEXT;
  }
}

function getMetaJson(message) {
 // parse JSON
}
szd00789 回答:在远程MQ

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3063517.html

大家都在问