Writing a simple application

Tips for writing a simple IBM MQ managed .NET TLS application, including examples for setting the SSL properties for connection factories, creating a queue manager instance, connection, session and destination, and sending a test message.


Before you begin

You must first configure TLS for managed IBM MQ.NET as described in Configure TLS for managed IBM MQ .NET.

For application program configuration in base .NET, set SSL properties either using the MQEnvironment class or by supplying a hashtable as part of the MQQueueManager constructor.

For application program configuration in XMS .NET, you set the SSL properties on the property context of the connection factories.


Procedure

  1. Set the SSL properties for the connection factories as shown in the following examples.

      Example for IBM MQ.NET
      properties = new Hashtable();
      properties.Add(MQC.TRANSPORT_PROPERTY, MQC.TRANSPORT_MQSERIES_MANAGED);
      properties.Add(MQC.HOST_NAME_PROPERTY, hostName);
      properties.Add(MQC.PORT_PROPERTY, port);
      properties.Add(MQC.CHANNEL_PROPERTY, channelName);
      properties.Add(MQC.SSL_CERT_STORE_PROPERTY, sslKeyRepository);
      properties.Add(MQC.SSL_CIPHER_SPEC_PROPERTY, cipherSpec);
      properties.Add(MQC.SSL_PEER_NAME_PROPERTY, sslPeerName);
      properties.Add(MQC.SSL_RESET_COUNT_PROPERTY, keyResetCount);
      properties.Add("CertificateLabel", "ibmwebspheremq");
      MQEnvironment.SSLCertRevocationCheck = sslCertRevocationCheck;
      

      Example for XMS .NET
      cf.SetStringProperty(XMSC.WMQ_SSL_KEY_REPOSITORY, "sslKeyRepository");
      cf.SetStringProperty(XMSC.WMQ_SSL_CIPHER_SPEC, cipherSpec);
      cf.SetStringProperty(XMSC.WMQ_SSL_PEER_NAME, sslPeerName);
      cf.SetIntProperty(XMSC.WMQ_SSL_KEY_RESETCOUNT, keyResetCount);
      cf.SetBooleanProperty(XMSC.WMQ_SSL_CERT_REVOCATION_CHECK, true);
      

  2. Create the queue manager instance, connections, session and destination as shown in the following examples.

      Example for MQ .NET
      queueManager = new MQQueueManager(queueManagerName, properties);
      Console.WriteLine("done");
      
      // accessing queue
      Console.Write("Accessing queue " + queueName + ".. ");
      queue = queueManager.AccessQueue(queueName, MQC.MQOO_OUTPUT + MQC.MQOO_FAIL_IF_QUIESCING);
      Console.WriteLine("done");
      

      Example for XMS .NET
      connectionWMQ = cf.CreateConnection();
      // Create session
      sessionWMQ = connectionWMQ.CreateSession(false, AcknowledgeMode.AutoAcknowledge);
      
      // Create destination
      destination = sessionWMQ.CreateQueue(destinationName);
      
      // Create producer
      producer = sessionWMQ.CreateProducer(destination);
      

  3. Send a message as shown in the following examples.

      Example for MQ .NET
      // creating a message object
      message = new MQMessage();
      message.WriteString(messageString);
      
      // putting messages continuously
      for (int i = 1; i <= numberOfMsgs; i++)
      {
      Console.Write("Message " + i + " <" + messageString + ">.. ");
      queue.Put(message);
      Console.WriteLine("put");
      }
      

      Example for XMS .NET
      textMessage = sessionWMQ.CreateTextMessage();
      textMessage.Text = simpleMessage;
      producer.Send(textMessage);
      

  4. Verify the TLS connection. Check the channel status to verify that the TLS connection has been established and is working correctly.