Esempio n. 1
0
        private void PublishMessage()
        {
            // txMessage.Text = "Publishing...";
            try
            {
                //_mqHelper.Host = txHost.Text;
                //_mqHelper.Port = Int32.Parse(txPort.Text);
                _mqHelper.QueueManager = txQMgr.Text;
                //_mqHelper.Channel = txQChannel.Text;
                _mqHelper.ProducerQueue = txQName.Text;
                //_mqHelper.MQType = MQXMSHelper.MQTypes.TOPIC;

                // option 1: WMQ
                // MQQueueManager queueManager = null;
                MQTopic   topic   = null;
                MQMessage message = null;
                string    msg     = txMessage.Text.ToString();

                Hashtable properties = new Hashtable();
                properties = new Hashtable();
                properties.Add(IBM.WMQ.MQC.HOST_NAME_PROPERTY, _mqHelper.Host);
                properties.Add(IBM.WMQ.MQC.PORT_PROPERTY, _mqHelper.Port);
                properties.Add(IBM.WMQ.MQC.CHANNEL_PROPERTY, _mqHelper.Channel);
                properties.Add(IBM.WMQ.MQC.TRANSPORT_PROPERTY, IBM.WMQ.MQC.TRANSPORT_MQSERIES_CLIENT); //unmanaged, or use TRANSPORT_MQSERIES_MANAGED

                // queueManager = new MQQueueManager(_mqHelper.QueueManager, properties);
                queueManager = new MQQueueManager(_mqHelper.QueueManager);
                // MessageBox.Show("Queue Manager created as:" + Environment.NewLine + "Host:" + _mqHelper.Host + Environment.NewLine + "Port:" + _mqHelper.Port + Environment.NewLine + "Channel:" + _mqHelper.Channel + Environment.NewLine + "Queue Manager:" + _mqHelper.QueueManager);
                // MessageBox.Show("Queue Manager created!");
                // Note: API signiture is confusing, the 1st parameter of AccessTopic is actually Topic String, NOT Topic Name
                topic = queueManager.AccessTopic(_mqHelper.ProducerQueue, null, IBM.WMQ.MQC.MQTOPIC_OPEN_AS_PUBLICATION, IBM.WMQ.MQC.MQOO_OUTPUT + IBM.WMQ.MQC.MQOO_FAIL_IF_QUIESCING);
                // topic = queueManager.AccessTopic(_mqHelper.ConsumerQueue, null, IBM.WMQ.MQC.MQTOPIC_OPEN_AS_SUBSCRIPTION, IBM.WMQ.MQC.MQSO_CREATE | IBM.WMQ.MQC.MQSO_FAIL_IF_QUIESCING | IBM.WMQ.MQC.MQSO_MANAGED | IBM.WMQ.MQC.MQSO_DURABLE);
                // topic = new MQTopic(queueManager, "TEST1", null, IBM.WMQ.MQC.MQTOPIC_OPEN_AS_PUBLICATION, IBM.WMQ.MQC.MQSO_CREATE + IBM.WMQ.MQC.MQSO_FAIL_IF_QUIESCING);

                message = new MQMessage();
                message.WriteString(msg);
                // MQPutMessageOptions mqpo = new MQPutMessageOptions();
                topic.Put(message);
                // queueManager.Put(IBM.WMQ.MQC.MQOT_TOPIC, null, _mqHelper.QueueManager, _mqHelper.ProducerQueue, message);
                MessageBox.Show("Message " + message.MessageLength + " published to " + _mqHelper.ProducerQueue);

                topic.Close();
                //MessageBox.Show(MQEnvironment.properties.Count + "");
                queueManager.Disconnect();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message + Environment.NewLine + ex.StackTrace + Environment.NewLine + ex.Source + Environment.NewLine + ex.GetBaseException());
            }
        }
        public override void Send(Message message)
        {
            var outgoing = new MQMessage();

            outgoing.Format = MQC.MQFMT_STRING;
            outgoing.WriteString(message.ToJsonString());
            if (Pattern == MessagePattern.PublishSubscribe)
            {
                _topic.Put(outgoing);
            }
            else
            {
                _queue.Put(outgoing);
            }
            _queueManager.Commit();
        }