public void RemoveMessage(IList <string> messageIds, MessageRemovedReason reason) { foreach (string messageid in messageIds) { RemoveMessage(messageid, reason); } }
/// <summary> /// Removes message /// </summary> /// <param name="messageId"></param> /// <param name="reason"></param> /// <returns>Returns message object</returns> public Message RemoveMessage(string messageId, MessageRemovedReason reason) { Message message = null; bool removed = true; lock (_mutex) { if (_messages.TryGetValue(messageId, out message)) { if (reason == MessageRemovedReason.Expired && message.MessageMetaData.IsNotify && !message.MessageMetaData.EverAcknowledged) { message.MessageMetaData.SubscriptionType = SubscriptionType.Publisher; message.MessageMetaData.DeliveryFailed = true; message.MessageMetaData.IsAssigned = true; message.MessageMetaData.AssigmentTime = null; message.MessageMetaData.MessgeFailureReason = MessgeFailureReason.Expired; //moved to undelivered queue _undeliveredMessages.Enqueue(message.MessageId, message); removed = false; } else { _messages.Remove(messageId); _undeliveredMessages.Remove(messageId); _size -= message.Size; if (_listener != null) { _listener.OnSizeDecrement(message.Size); _listener.OnCountDecrement(1); } } message.MessageMetaData.OnMessageRemoved(); _unassignedMessages.Remove(messageId); _deliveredMessages.Remove(messageId); if (message.MessageMetaData.AbsoluteExpiratoinTime.HasValue) { _expirationIndex.Remove(messageId); } } } if (removed && reason == MessageRemovedReason.Delivered && message.MessageMetaData.SubscriptionType == SubscriptionType.Subscriber) { if (_context.PerfStatsColl != null) { _context.PerfStatsColl.IncrementMessageDeliverPerSec(); } } //only return message if it is removed from _messages return(removed ? message : null); }
internal Message RemoveMessage(MessageInfo message, MessageRemovedReason reason) { Topic topic = GetTopic(message.Topic); if (topic != null) { return(topic.RemoveMessage(message.MessageId, reason)); } return(null); }
/// <summary> /// Removes message /// </summary> /// <param name="messageId"></param> /// <param name="reason"></param> /// <returns>Retruns message object</returns> public Message RemoveMessage(string messageId, MessageRemovedReason reason) { Message message = null; bool removed = true; lock (_mutex) { if (_messages.TryGetValue(messageId, out message)) { _messages.Remove(messageId); _size -= message.Size; if (_listener != null) { _listener.OnSizeDecrement(message.Size); _listener.OnCountDecrement(1); } message.MessageMetaData.OnMessageRemoved(); _unassignedMessages.Remove(messageId); _deliveredMessages.Remove(messageId); if (message.MessageMetaData.AbsoluteExpiratoinTime.HasValue) { _expirationIndex.Remove(messageId); } } } if (_context.IsStartedAsMirror && message == null) { return(null); } if (removed && reason == MessageRemovedReason.Delivered && message?.MessageMetaData.SubscriptionType == SubscriptionType.Subscriber) { if (_context.PerfStatsColl != null && !_context.IsStartedAsMirror) { _context.PerfStatsColl.IncrementMessageDeliverPerSec(); } } //only return message if it is removed from _messages return(removed ? message : null); }
public override void RemoveMessages(IList <MessageInfo> messagesTobeRemoved, MessageRemovedReason reason, OperationContext context) { HashVector errors = new HashVector(); foreach (MessageInfo messageInfo in messagesTobeRemoved) { try { RemoveMessagesInternal(messageInfo, reason, context); } catch (Exception e) { errors.Add(messageInfo, e); } } if (_context.PerfStatsColl != null) { _context.PerfStatsColl.SetCacheSize(Size); } }
protected virtual Messaging.Message RemoveMessagesInternal(MessageInfo messageTobeRemoved, MessageRemovedReason reason, OperationContext context) { return(_topicManager.RemoveMessage(messageTobeRemoved, reason)); }
public void Deserialize(CompactReader reader) { _message = reader.ReadObject() as MessageInfo; _reason = (MessageRemovedReason)reader.ReadInt32(); _context = reader.ReadObject() as OperationContext; }
public AtomicRemoveMessageOperation(MessageInfo messageTobeRemoved, MessageRemovedReason reason, OperationContext context) { _message = messageTobeRemoved; _reason = reason; _context = context; }
internal IList <Message> RemoveMessages(IList <MessageInfo> messagesTobeRemoved, MessageRemovedReason reason) { IList <Message> removedMessages = new List <Message>(messagesTobeRemoved.Count); try { _rwLock.EnterReadLock(); foreach (MessageInfo message in messagesTobeRemoved) { Topic topic = GetTopic(message.Topic); if (topic != null) { Message removed = topic.RemoveMessage(message.MessageId, reason); if (removed != null) { removedMessages.Add(removed); } } } } finally { _rwLock.ExitReadLock(); } return(removedMessages); }
public void Deserialize(CompactReader reader) { _messagesTobeRemoved = SerializationUtility.DeserializeList <MessageInfo>(reader); _reason = (MessageRemovedReason)reader.ReadInt32(); _context = reader.ReadObject() as OperationContext; }
public RemoveMessagesOperation(IList <MessageInfo> messagesTobeRemoved, MessageRemovedReason reason, OperationContext context) { _messagesTobeRemoved = messagesTobeRemoved; _reason = reason; _context = context; }