本文整理汇总了C#中System.Messaging.MessageQueue.GetMessageEnumerator2方法的典型用法代码示例。如果您正苦于以下问题:C# MessageQueue.GetMessageEnumerator2方法的具体用法?C# MessageQueue.GetMessageEnumerator2怎么用?C# MessageQueue.GetMessageEnumerator2使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.Messaging.MessageQueue
的用法示例。
在下文中一共展示了MessageQueue.GetMessageEnumerator2方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GetEnqueuedJobIds
public IEnumerable<int> GetEnqueuedJobIds(string queue, int @from, int perPage)
{
var result = new List<int>();
using (var messageQueue = new MessageQueue(String.Format(_pathPattern, queue)))
{
var current = 0;
var end = @from + perPage;
var enumerator = messageQueue.GetMessageEnumerator2();
var formatter = new BinaryMessageFormatter();
while (enumerator.MoveNext())
{
if (current >= @from && current < end)
{
var message = enumerator.Current;
message.Formatter = formatter;
result.Add(int.Parse((string)message.Body));
}
if (current >= end) break;
current++;
}
}
return result;
}
示例2: Count
public int Count(MessageQueue queue)
{
int count = 0;
var enumarator = queue.GetMessageEnumerator2();
while (enumarator.MoveNext())
count++;
Console.WriteLine("There is {0} ", count + " Message in the queue right now");
return count;
}
示例3: GetLogEntries
public IEnumerable<LogEntry> GetLogEntries()
{
var queueAddress = ConfigurationManager.AppSettings["queueName"];
var messages = new List<Message>();
using (var queue = new MessageQueue(queueAddress))
{
var enumerator = queue.GetMessageEnumerator2();
while (enumerator.MoveNext(new TimeSpan(0, 0, 1)))
{
messages.Add(enumerator.Current);
}
}
return ParseMessages(messages);
}
示例4: Main
static void Main(string[] args)
{
MessageQueue myQueue = new MessageQueue(".\\myQueue");
//var mes = myQueue.Receive(new TimeSpan(0, 0, 3));
var timeout = TimeSpan.FromSeconds(1);
MessageEnumerator msgs = myQueue.GetMessageEnumerator2();
while (msgs.MoveNext(timeout))
{
using (var message = myQueue.ReceiveById(msgs.Current.Id, timeout))
{
message.Formatter = new XmlMessageFormatter(new String[] { "System.String,mscorlib" });
string m = message.Body.ToString();
Console.WriteLine(m);
}
}
}
示例5: PickMessage
public object[] PickMessage(string fromQueue)
{
using (var queue = new MessageQueue(fromQueue))
{
using (MessageEnumerator messageEnumerator2 = queue.GetMessageEnumerator2())
{
if (!messageEnumerator2.MoveNext())
return null;
Message current = messageEnumerator2.Current;
messageEnumerator2.RemoveCurrent();
return DeserializeMessage(current);
}
}
}
示例6: Count
public long Count(long limit)
{
long count = 0;
using (var queue = new MessageQueue(_address.InboundFormatName, QueueAccessMode.Receive))
{
using (MessageEnumerator enumerator = queue.GetMessageEnumerator2())
{
while (enumerator.MoveNext(TimeSpan.Zero))
{
if (++count >= limit)
break;
}
}
}
return count;
}
示例7: GetEnqueuedAndFetchedCount
public EnqueuedAndFetchedCountDto GetEnqueuedAndFetchedCount(string queue)
{
using (var messageQueue = new MessageQueue(String.Format(_pathPattern, queue)))
{
var count = 0;
var enumerator = messageQueue.GetMessageEnumerator2();
while (enumerator.MoveNext())
{
count++;
}
return new EnqueuedAndFetchedCountDto
{
EnqueuedCount = count
};
}
}
示例8: GetTimeoutMessages
/// <summary>
/// Gets a listing of all timeout messages.
/// </summary>
/// <returns></returns>
public IEnumerable<TimeoutInfo> GetTimeoutMessages(MessageQueue queue)
{
var fullSubQueueName = queue.Path + ";timeout";
using (var timeoutQueue = new MessageQueue(fullSubQueueName, QueueAccessMode.Receive))
{
timeoutQueue.MessageReadPropertyFilter.Extension = true;
var enumerator2 = timeoutQueue.GetMessageEnumerator2();
while(enumerator2.MoveNext())
{
var message = enumerator2.Current;
if(message==null)
continue;
yield return new TimeoutInfo
{
Id = message.Id,
Time = DateTime.FromBinary(BitConverter.ToInt64(message.Extension, 0))
};
}
}
}
示例9: Transfer
public int Transfer(string subject, string destination, string expression, bool caseInsensitive, bool removeAfter)
{
MessageQueueTransaction transaction = null;
int ret = 0;
Regex matcher = null;
if (expression != null)
matcher = new Regex("(" + expression + ")", RegexOptions.Compiled | (caseInsensitive ? RegexOptions.IgnoreCase : RegexOptions.None));
var messagePropertyFilter = new MessagePropertyFilter
{
ArrivedTime = true,
Body = true,
Id = true,
Label = true
};
var messageQueue = new MessageQueue(subject);
if (!Exists(destination))
{
throw new Exception("Can't write to non-existing queue " + destination + ". You can create it with qtouch.");
}
var destinationQueue = new MessageQueue(destination);
if (!destinationQueue.CanWrite)
{
throw new Exception("Can't write to non-writable queue " + destination);
}
if (destinationQueue.Transactional)
{
transaction = new MessageQueueTransaction();
transaction.Begin();
}
destinationQueue.Formatter = messageQueue.Formatter;
messageQueue.MessageReadPropertyFilter = messagePropertyFilter;
var messageEnumerator2 = messageQueue.GetMessageEnumerator2();
while (messageEnumerator2.MoveNext())
{
if (messageEnumerator2.Current == null)
continue;
var message = messageEnumerator2.Current;
if (matcher != null)
{
using (var streamReader = new StreamReader(message.BodyStream))
{
string body = streamReader.ReadToEnd();
if (!matcher.IsMatch(body))
continue;
Send(message, destinationQueue, transaction);
}
}
else
{
Send(message, destinationQueue, transaction);
}
ret++;
if (removeAfter)
messageEnumerator2.RemoveCurrent();
}
if (transaction!=null)
transaction.Commit();
return ret;
}
示例10: MessageTypes
public Dictionary<string, int> MessageTypes()
{
var dict = new Dictionary<string, int>();
using (var queue = new MessageQueue(_address.InboundFormatName, QueueAccessMode.Receive))
{
using (MessageEnumerator enumerator = queue.GetMessageEnumerator2())
{
while (enumerator.MoveNext(TimeSpan.Zero))
{
Message q = enumerator.Current;
if (!dict.ContainsKey(q.Label))
dict.Add(q.Label, 0);
dict[q.Label]++;
}
}
}
return dict;
}
示例11: Grep
public IEnumerable<GrepResult> Grep(string subject, string expression, bool caseInsensitive)
{
Regex matcher = new Regex("(" + expression + ")", RegexOptions.Compiled | (caseInsensitive ? RegexOptions.IgnoreCase : RegexOptions.None));
var messagePropertyFilter = new MessagePropertyFilter
{
ArrivedTime = true,
Body = true,
Id = true,
Label = true
};
var messageQueue = new MessageQueue(subject);
messageQueue.MessageReadPropertyFilter = messagePropertyFilter;
var messageEnumerator2 = messageQueue.GetMessageEnumerator2();
while (messageEnumerator2.MoveNext())
{
if (messageEnumerator2.Current == null)
continue;
var message = messageEnumerator2.Current;
using (var streamReader = new StreamReader(message.BodyStream))
{
string body = streamReader.ReadToEnd();
if (!matcher.IsMatch(body))
continue;
yield return
new GrepResult
{Message = CreateMessageDescriptor(message), Text = matcher.HighlightMatch(body, "<{0}>")};
}
}
}
示例12: Tail
public IEnumerable<MessageDescriptor> Tail(string queue)
{
var messagePropertyFilter = new MessagePropertyFilter
{
ArrivedTime = true,
Body = true,
Id = true,
Label = true
};
var messageQueue = new MessageQueue(queue);
messageQueue.MessageReadPropertyFilter = messagePropertyFilter;
var messageEnumerator2 = messageQueue.GetMessageEnumerator2();
while(true)
{
//arbitrary, 1 day.
while(messageEnumerator2.MoveNext(TimeSpan.FromDays(1)))
{
if(messageEnumerator2.Current == null)
continue;
yield return CreateMessageDescriptor(messageEnumerator2.Current);
}
}
}
示例13: ClearMessages
public void ClearMessages(string queuePath, string labelFilter = null)
{
Guard.QueueExists(queuePath);
var queue = new MessageQueue(queuePath)
{
MessageReadPropertyFilter = { Label = true }
};
var messageEnumerator = queue.GetMessageEnumerator2();
try
{
while (messageEnumerator.MoveNext())
{
Message currentMessage = null;
try
{
currentMessage = messageEnumerator.Current;
}
catch (MessageQueueException e)
{
//TODO: Use ILog
Console.WriteLine(e);
}
if (currentMessage == null)
continue;
if (labelFilter != null && currentMessage.Label != labelFilter)
continue;
queue.ReceiveById(currentMessage.Id);
}
}
finally
{
messageEnumerator.Close();
}
queue.Close();
}
示例14: Cat
public IEnumerable<CatResult> Cat(string subject, bool withExtension)
{
var messagePropertyFilter = new MessagePropertyFilter
{
ArrivedTime = true,
Body = true,
Id = true,
Label = true,
Extension = withExtension
};
var messageQueue = new MessageQueue(subject);
messageQueue.MessageReadPropertyFilter = messagePropertyFilter;
var messageEnumerator2 = messageQueue.GetMessageEnumerator2();
while (messageEnumerator2.MoveNext())
{
if (messageEnumerator2.Current == null)
continue;
var message = messageEnumerator2.Current;
using (var streamReader = new StreamReader(message.BodyStream))
{
string body = streamReader.ReadToEnd();
yield return
new CatResult { Message = CreateMessageDescriptor(message), Text = body, Extension = withExtension ? message.Extension : null };
}
}
}
示例15: PeekMessages
private IEnumerable<LabelIdMapping> PeekMessages(MessageQueue queue)
{
var counter = 0;
using (var msgEnumerator = queue.GetMessageEnumerator2())
{
while (msgEnumerator.MoveNext(TimeSpan.FromMilliseconds(10)) && msgEnumerator.Current != null)
{
counter++;
var labelId = new LabelIdMapping
{
Id = msgEnumerator.Current.Id,
Label = msgEnumerator.Current.Label
};
Dispatcher.Invoke(new Action<LabelIdMapping>(AddSeatToRoom), labelId);
}
}
return (counter > 0) ? _seats : new List<LabelIdMapping>();
}