C# websphere установить локальный порт на Windows TCP

Я использую IBM websphere XMS API для подключения и отправки сообщений на мэйнфрейм. Однако каждое отправленное сообщение отправляется через новый локальный порт. Есть ли способ установить фиксированный порт?

Новый порт создается локально при нажатии следующей строки:

var connContext = new XMSConnectionContext(connFactory.CreateConnection(), sendQ, replyQ, mqProfile, DateTime.Now.AddSeconds(qm.MqConfiguration.ConnectionPoolExpiryTime));

Код, который я использую

    public IMQMessage Message { get; set; }

    public void Initialise(IMQMessage message, QueueSet queueSet, QueueManager queueManager)
    {
        Message = message;
        if (_connContext.ContainsKey(message.MessageId)) return;
        _connContext.TryAdd(message.MessageId, ConnectQueueSet(queueSet, queueManager));
        _connContext[message.MessageId].Connection.Start();
    }

    private XMSConnectionContext ConnectQueueSet(MQQueueSet queueSet, QueueManager qm)
    {
        var mqProfile = GetProfile(queueSet);

        var xmsFactory = XMSFactoryFactory.GetInstance(XMSC.CT_WMQ);
        var connFactory = xmsFactory.CreateConnectionFactory();

        connFactory.SetStringProperty(XMSC.WMQ_HOST_NAME, mqProfile.ServerName);
        connFactory.SetIntProperty(XMSC.WMQ_PORT, mqProfile.Port);
        connFactory.SetStringProperty(XMSC.WMQ_CHANNEL, mqProfile.ChannelName);
        connFactory.SetStringProperty(XMSC.WMQ_QUEUE_MANAGER, mqProfile.QueueManagerName);
        connFactory.SetIntProperty(XMSC.WMQ_FAIL_IF_QUIESCE, 1);
        connFactory.SetIntProperty(XMSC.WMQ_SHARE_CONV_ALLOWED, XMSC.WMQ_SHARE_CONV_ALLOWED_YES);
        connFactory.SetIntProperty(XMSC.WMQ_CONNECTION_MODE, XMSC.WMQ_CM_CLIENT);

Мы пробовали

        connFactory.SetStringProperty(XMSC.XMSC_WMQ_LOCAL_ADDRESS,"(45000,45010)");

Мы также пытались

        connFactory.SetStringProperty(XMSC.XMSC_WMQ_LOCAL_ADDRESS,"localhost(45000,45010)");

Мы также пытались

        connFactory.SetStringProperty(XMSC.XMSC_WMQ_LOCAL_ADDRESS,"192.168.12.156(45000,45010)");

Конец тестов, а остальное ниже как было.

        IDestination sendQ = xmsFactory.CreateQueue(string.Format("queue://{0}/{1}?targetClient=1", mqProfile.QueueManagerName, mqProfile.RequestQueue));
        IDestination replyQ = xmsFactory.CreateQueue(string.Format("queue://{0}/{1}?targetClient=1", mqProfile.QueueManagerName, mqProfile.ReplyQueue));

        var connContext = new XMSConnectionContext(connFactory.CreateConnection(), sendQ, replyQ, mqProfile, DateTime.Now.AddSeconds(qm.MqConfiguration.ConnectionPoolExpiryTime));

        QueueManager.Log.DebugFormat("XMSConnectionContext-Instantiated: ProfileName={0} SendQ={1}, ReplyQ={2}, ConnectionMetaData={3}", connContext.ProfileName, connContext.SendQ, connContext.ReplyQ, connContext.Connection);

        return connContext;
    }

    public void Close()
    {
        if (_connContext != null)
        {
            _connContext[Message.MessageId].Connection.Stop();
        }

    }

Любая помощь будет оценена. Благодарю.

1 ответ

XMS .NET имеет свойство фабрики соединений XMSC_WMQ_LOCAL_ADDRESS, которое позволяет указать локальный порт, который будет использоваться при подключении к администратору очередей. Подробнее здесь

Другие вопросы по тегам