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