2016-04-20 3 views
0

Ich verwende die IBM Websphere XMS API, um eine Verbindung herzustellen und Nachrichten an den Mainframe zu senden. Jede gesendete Nachricht wird jedoch über einen neuen lokalen Port gesendet. Gibt es eine Möglichkeit, dies auf einen festen Port zu setzen?C# websphere lokalen Port auf Windows setzen tcp

Ein neuer Anschluss wird lokal erstellt, wenn die folgende Zeile getroffen wird:

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

Der Code ich benutze ist

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

Wir versucht haben

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

Wir habe auch versucht

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

Wir haben auch versucht,

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

Ende der Tests und der Rest unten ist, wie es war.

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

    } 

Jede Hilfe wäre willkommen. Vielen Dank.

Antwort

0

XMS .NET verfügt über eine Verbindungsfactory-Eigenschaft, XMSC_WMQ_LOCAL_ADDRESS, mit der Sie einen lokalen Port angeben können, der beim Herstellen einer Verbindung mit einem Warteschlangenmanager verwendet werden soll. Mehr Details here

+0

Ich werde es versuchen, wenn ich am Montag zurück bin. Vielen Dank. –

+0

Danke dafür aber leider betrifft das die Mainframe Einstellungen und nicht die Windows Eins. –

+0

Ich bin überrascht. Könnten Sie bitte den Code eingeben, wo Sie die Eigenschaft festlegen? – Shashi

Verwandte Themen