Example #1
0
        public MessageSender(String broker, String topicName)
        {
            //Create connection
                try
                {
                    sonicSender = new SonicCommunicator(topicName, broker);
                    cf = sonicSender.GetConnectionFactory();
                    conn = cf.createConnection();
                    session = (Session)conn.createSession(false, Sonic.Jms.SessionMode.AUTO_ACKNOWLEDGE);
                }
                catch (JMSException jmse)
                {
                    throw new Exception("Unable to establish connection to MQ." + jmse.Message + " / " + jmse.InnerException);
                }

                Console.WriteLine("Create Session: " + session.ToString());

                //create the topic
                try
                {
                    topic = session.createTopic(topicName);
                    publisher = session.createProducer(topic);
                    tempTopic = session.createTemporaryTopic();
                    subscriber = session.createConsumer(tempTopic);
                    conn.start();
                }
                catch (JMSException jmse)
                {
                    throw new Exception("Unable to create topic." + jmse.Message + " / " + jmse.InnerException);
                }
        }
        public virtual string SendMessage(string messageText)
        {
            //var log = SCMS.Logging.Log.Create(GetType());
            string line = "";
            try
            {
                line = string.Format("Start IVRSonicCommunicator::SendMessage()\t {0}\t Raw outbound async message : {1} ", FormatLogMessage("Tams topic Name"), messageText);
              //  log.Info(line);

                EnsureOpenConnection();

                var document = new XmlDocument();
                document.LoadXml(messageText);

                var message = _session.createXMLMessage();
                var replyTo = _session.createTemporaryTopic();
                _messageConsumer = _session.createConsumer(replyTo);

                message.setJMSReplyTo(replyTo);
                message.setDocument(document);

                _messageProducer.send(_topic, message);
                _session.commit();

                line = string.Format("End IVRSonicCommunicator::SendMessage()\t JMSMessageID: {0}", message.getJMSMessageID());
                //log.Info(line);

                return (message.getJMSMessageID());
            }
            catch (Exception ex)
            {
               // log.Error(ex);

                //Context.Logger.Log(
                //    GetType().Name,
                //    LogSeverity.Error,
                //    "Error Sending with the Sonic Communicator: Exception writing to sonic." + FormatLogMessage(),
                //    ex);
            }
            return (null);
        }
        private void EnsureOpenConnection()
        {
            if (_connection != null)
                return;
            _connection = GetNewConnectionFactory().createConnection();
            _session = (Sonic.Jms.Ext.Session)_connection.createSession(true, SessionMode.AUTO_ACKNOWLEDGE);
            _topic = _session.createTopic(_topicName);
            _messageProducer = _session.createProducer(null);
            _messageConsumer = _session.createConsumer(_topic);

            _connection.setExceptionListener(this);
            _connection.start();
        }
        //Sending message to Juris
        public virtual string SendMessageToJuris(string messageText,string jurisReplyToTopicName)
        {
            //var log = SCMS.Logging.Log.Create(GetType());
            string line = "";
            try
            {
                line = string.Format("Start IVRSonicCommunicator::SendMessageToJuris()\t {0}\t Message : {1} ", FormatLogMessage("Juris Topic Name") , messageText);
              //  log.Info(line);

                EnsureOpenConnection();

                var document = new XmlDocument();
                document.LoadXml(messageText);

                var message = _session.createXMLMessage();
                var topicReplyTo = _session.createTopic(jurisReplyToTopicName);
                _messageConsumer = _session.createConsumer(topicReplyTo);

                //Create durable subscriber
                _messageConsumer = _session.createDurableSubscriber(topicReplyTo, "jurisSubscriber");
                //end

                message.setJMSReplyTo(topicReplyTo);
                message.setDocument(document);

                _messageProducer.send(_topic, message);
                _session.commit();

                line = string.Format("End IVRSonicCommunicator::SendMessageToJuris(), Received JMSMessageID: {0} ", message.getJMSMessageID());
              //  log.Info(line);

                return (message.getJMSMessageID());
            }
            catch (Exception ex)
            {
              //  log.Error(ex);
            }
            return (null);
        }