private void HandleTibcoMsg(object sender, TIBCO.EMS.EMSMessageEventArgs arg) { Apache.NMS.IMessage message = EMSConvert.ToNMSMessage(arg.Message); if (null != message) { if (this.ConsumerTransformer != null) { IMessage newMessage = ConsumerTransformer(this.nmsSession, this, message); if (newMessage != null) { message = newMessage; } } if (Listener != null) { try { Listener(message); } catch (Exception ex) { Apache.NMS.Tracer.Debug("Error handling message: " + ex.Message); } } else { this.dispatcher.Enqueue(message); } } }
public static IMessage CreateFrom(Apache.NMS.IMessage queueMessage, ISession session) { if (queueMessage == null) { return(null); } Apache.NMS.ITextMessage textMessage = queueMessage as Apache.NMS.ITextMessage; if (textMessage == null) { throw new ArgumentException(string.Format("Unsupported message type provided: \"{0}\"", queueMessage.GetType().FullName)); } Message message = new Message(); message.queueMessage = queueMessage; message.Text = textMessage.Text; message.Id = textMessage.GetId(); message.Type = textMessage.GetMessageType(); message.SentDate = textMessage.GetSentDate(); message.TryIndex = textMessage.GetTryIndex(); message.DeliveryTimeout = textMessage.GetDeliveryDelay(); message.session = session; return(message); }
/// <summary> /// Redeliver the given message, putting it at the head of the queue /// </summary> public void Redeliver(Apache.NMS.IMessage message) { lock (semaphore) { messagesToRedeliver.Add(message); } }
/// <summary> /// Sends the message to the given destination /// </summary> public void Send(Apache.NMS.IDestination destination, Apache.NMS.IMessage message) { Apache.NMS.EMS.Destination dest = (Apache.NMS.EMS.Destination)destination; Apache.NMS.EMS.Message msg = GetEMSMessage(message); long timeToLive = (long)message.NMSTimeToLive.TotalMilliseconds; if (0 == timeToLive) { timeToLive = this.tibcoMessageProducer.TimeToLive; } try { this.tibcoMessageProducer.Send( dest.tibcoDestination, msg.tibcoMessage, this.tibcoMessageProducer.MsgDeliveryMode, this.tibcoMessageProducer.Priority, timeToLive); } catch (Exception ex) { ExceptionUtil.WrapAndThrowNMSException(ex); } }
/// <summary> /// Method Enqueue /// </summary> public void Enqueue(Apache.NMS.IMessage message) { lock (semaphore) { queue.Enqueue(message); messageReceivedEventHandle.Set(); } }
public IDictionary <string, object> ToHeaders(IMessage nmsMessage) { IDictionary <string, object> headerMap = new Dictionary <string, object>(); headerMap.Add("testProperty", "foo"); headerMap.Add("testAttribute", 123); return(headerMap); }
protected void LogMessageReceived(Apache.NMS.IMessage message) { Apache.NMS.ITextMessage textMessage = message as Apache.NMS.ITextMessage; if (textMessage != null) { this.logger.LogMessageWasReceived(textMessage.GetId(), textMessage.GetMessageType(), textMessage.GetTryIndex(), textMessage.GetSentDate(), textMessage.GetDeliveryDelay(), textMessage.Text); } }
public static string GetMessageType(this Apache.NMS.IMessage message) { if (message.Properties.Contains(CONST_MessageTypeKey)) { object messageType = message.Properties[CONST_MessageTypeKey]; return(messageType != null?messageType.ToString() : string.Empty); } return(string.Empty); }
/// <summary> /// Sends the message to the default destination with the explicit QoS configuration /// </summary> public void Send(Apache.NMS.IMessage message, bool persistent, byte priority, TimeSpan timeToLive) { Apache.NMS.EMS.Message msg = (Apache.NMS.EMS.Message)message; this.tibcoMessageProducer.Send( msg.tibcoMessage, EMSConvert.ToMessageDeliveryMode(persistent), priority, (long)timeToLive.TotalMilliseconds); }
/// <summary> /// Sends the message to the default destination with the explicit QoS configuration /// </summary> public void Send(Apache.NMS.IMessage message, MsgDeliveryMode deliveryMode, MsgPriority priority, TimeSpan timeToLive) { Apache.NMS.EMS.Message msg = (Apache.NMS.EMS.Message)message; this.tibcoMessageProducer.Send( msg.tibcoMessage, EMSConvert.ToMessageDeliveryMode(deliveryMode), (int)priority, (long)timeToLive.TotalMilliseconds); }
public static string GetId(this Apache.NMS.IMessage message) { var activeMQMessage = message as Apache.NMS.ActiveMQ.Commands.ActiveMQMessage; if (activeMQMessage == null) { return(string.Empty); } return(activeMQMessage.NMSMessageId); }
/// <summary> /// Method DequeueNoWait /// </summary> public Apache.NMS.IMessage DequeueNoWait() { Apache.NMS.IMessage rc = null; lock (semaphore) { if (!m_bClosed && queue.Count > 0) { rc = (Apache.NMS.IMessage)queue.Dequeue(); } } return(rc); }
public static DateTime GetSentDate(this Apache.NMS.IMessage message) { if (message.Properties.Contains(CONST_SentDateKey)) { DateTime sentDate; object sentDateObject = message.Properties[CONST_SentDateKey]; if (sentDateObject != null && DateTime.TryParse(sentDateObject.ToString(), out sentDate)) { return(sentDate); } } return(DateTime.MinValue); }
public IMessage ReceiveMessage(int timeoutInMs = 1000) { this.InitializeIfReq(); try { Apache.NMS.IMessage queueMessage = this.messageConsumer.Receive(TimeSpan.FromMilliseconds(timeoutInMs)); this.LogMessageReceived(queueMessage); return(Message.CreateFrom(queueMessage, this.session)); } catch (Apache.NMS.NMSException exc) { throw new QueueingException("Cannot receive a message", exc); } }
public static int GetTryIndex(this Apache.NMS.IMessage message) { var activeMQMessage = message as Apache.NMS.ActiveMQ.Commands.ActiveMQMessage; if (activeMQMessage == null) { return(-1); } int redeliveryCounter = activeMQMessage.Properties.Contains(CONST_RedeliveryIndexKey) ? Convert.ToInt32(activeMQMessage.Properties[CONST_RedeliveryIndexKey]) : activeMQMessage.RedeliveryCounter; return(redeliveryCounter + 1); }
private Apache.NMS.EMS.Message GetEMSMessage(Apache.NMS.IMessage message) { Apache.NMS.EMS.Message msg = (Apache.NMS.EMS.Message)message; if (this.ProducerTransformer != null) { IMessage transformed = this.ProducerTransformer(this.nmsSession, this, message); if (transformed != null) { msg = (Apache.NMS.EMS.Message)transformed; } } return(msg); }
public static void SetTryIndex(this Apache.NMS.IMessage message, int tryIndex) { var activeMQMessage = message as Apache.NMS.ActiveMQ.Commands.ActiveMQMessage; if (activeMQMessage == null) { return; } if (tryIndex <= 0) { return; } activeMQMessage.Properties[CONST_RedeliveryIndexKey] = tryIndex - 1; }
public static void SetDeliveryDelay(this Apache.NMS.IMessage message, int delayInMs) { var activeMQMessage = message as Apache.NMS.ActiveMQ.Commands.ActiveMQMessage; if (activeMQMessage == null) { return; } if (delayInMs <= 0) { return; } message.Properties[CONST_DeliveryDelayKey] = delayInMs; }
/// <summary> /// Sends the message to the default destination for this producer /// </summary> public void Send(Apache.NMS.IMessage message) { Apache.NMS.EMS.Message msg = (Apache.NMS.EMS.Message)message; long timeToLive = (long)message.NMSTimeToLive.TotalMilliseconds; if (0 == timeToLive) { timeToLive = this.tibcoMessageProducer.TimeToLive; } this.tibcoMessageProducer.Send( msg.tibcoMessage, this.tibcoMessageProducer.MsgDeliveryMode, this.tibcoMessageProducer.Priority, timeToLive); }
/// <summary> /// Sends the message to the default destination with the explicit QoS configuration /// </summary> public void Send(Apache.NMS.IMessage message, MsgDeliveryMode deliveryMode, MsgPriority priority, TimeSpan timeToLive) { Apache.NMS.EMS.Message msg = GetEMSMessage(message); try { this.tibcoMessageProducer.Send( msg.tibcoMessage, EMSConvert.ToMessageDeliveryMode(deliveryMode), (int)priority, (long)timeToLive.TotalMilliseconds); } catch (Exception ex) { ExceptionUtil.WrapAndThrowNMSException(ex); } }
public static int GetDeliveryDelay(this Apache.NMS.IMessage message) { var activeMQMessage = message as Apache.NMS.ActiveMQ.Commands.ActiveMQMessage; if (activeMQMessage == null) { return(0); } object deliveryTimeout = message.Properties[CONST_DeliveryDelayKey]; if (deliveryTimeout == null) { return(0); } return(Convert.ToInt32(deliveryTimeout)); }
/// <summary> /// Whem we start a transaction we must redeliver any rolled back messages /// </summary> public void RedeliverRolledBackMessages() { lock (semaphore) { System.Collections.Queue replacement = new System.Collections.Queue(queue.Count + messagesToRedeliver.Count); foreach (Apache.NMS.IMessage element in messagesToRedeliver) { replacement.Enqueue(element); } messagesToRedeliver.Clear(); while (queue.Count > 0) { Apache.NMS.IMessage element = (Apache.NMS.IMessage)queue.Dequeue(); replacement.Enqueue(element); } queue = replacement; if (queue.Count > 0) { messageReceivedEventHandle.Set(); } } }
public static void SetSentDate(this Apache.NMS.IMessage message, DateTime sendDate) { message.Properties[CONST_SentDateKey] = sendDate.ToString(); }
/// <summary> /// This function is a callback function received whenever an ActiveMQ message is received from the server. It processes the message and passes it on to the client via /// the MessageEvent handler. /// </summary> /// <param name="msg">ActiveMQ message received from the server</param> protected void OnMessage(Apache.NMS.IMessage msg) { string message = ""; //string elements = null ; string temp = null; //string holder = null ; //StringTokenizer st = null; //int index = 0 ; //System.out.println("onMessage(): " + ((TextMessage)msg).getText() ); //if ( msg instanceof TextMessage ) { Apache.NMS.ActiveMQ.Commands.ActiveMQTextMessage txtMsg = (Apache.NMS.ActiveMQ.Commands.ActiveMQTextMessage)msg; temp = txtMsg.Text; temp = HttpUtility.UrlDecode(temp); temp = temp.Trim(); /* * // Strip off first char of args if it is a " * if( temp.substring(0,1).compareToIgnoreCase("\"") == 0 ) * { * temp = (temp.substring( 1, temp.length())).trim() ; * if( temp.substring(0,1).compareToIgnoreCase("\"") == 0 ) * { * // if 2 double quotes at end, take one double quote off * message += temp.substring( 0, temp.length()-1 ); * } * else * { * message += "\"" + temp ; * } * } * else * { * message += temp ; * } */ message = temp; Dictionary <string, string> properties = new Dictionary <string, string>(); foreach (string key in txtMsg.Properties.Keys) { object data = txtMsg.Properties[key]; string sData = data as string; if (sData != null) { properties[key] = HttpUtility.UrlDecode(sData).Trim(); } } Message args = new Message(message, properties); if (m_immediateMethod) { MessageEvent(this, args); } else { lock (m_messageLock) { m_messages.Add(args); } // signal the other thread that we've received a message (only used in WaitAndPoll() ) lock (m_waitLock) { m_waitCondition.Set(); } } } }
public void FromHeaders(MessageHeaders headers, IMessage nmsMessage) { }
/// <summary> /// This function is a callback function received whenever an ActiveMQ message is received from the server. It ignores the message and returns immediately. /// </summary> /// <param name="msg">ActiveMQ message received from the server</param> protected void OnMessageIgnore(Apache.NMS.IMessage msg) { return; }
public static void SetMessageType(this Apache.NMS.IMessage message, string type) { message.Properties[CONST_MessageTypeKey] = type; }