2016-04-20 2 views
0

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

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

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(); 
     } 

    } 

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

ответ

0

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

+0

Я попробую, когда вернусь в понедельник. Спасибо. –

+0

Благодарим вас за это, но, к сожалению, это влияет на настройки мейнфрейма, а не на окна. –

+0

Я удивлен. Не могли бы вы разместить код, в котором вы устанавливаете свойство? – Shashi

Смежные вопросы