2012-12-28 41 views
1

我正在使用PowerShell實用程序,它將通過添加現有消息的重複副本來保持最小數量的消息在消費者隊列中處理。使用powershell創建MSMQ消息的克隆/重複副本

下面是我在做什麼

[Reflection.Assembly]::LoadWithPartialName("System.Messaging") | out-null 
[Reflection.Assembly]::LoadWithPartialName("System.Text") | out-null 
. 
. 
$enum = $queue.GetMessageEnumerator2(); 

while($enum.MoveNext()) 
{ 
    #Strategy 1 - Re-add existing message to queue 
    $message = $enum.Current; 
    $queue.Send($message); 

    #Strategy 2 - Add a dummy message to queue 
    $messageClone = New-Object System.Messaging.Message; 
    $queue.Send($messageClone); 

    logInfo("Number of messages in Queue - " + $queue.GetAllMessages().Length); 
} 
. 
. 

我不認爲這是工作作爲消息的總數增加了消息隊列後保持不變。你能不能指出我用這種方法的問題?

回答

0

那麼我沒有以正確的方式創建重複的消息。這是對這個問題的解決方案

[Reflection.Assembly]::LoadWithPartialName("System.Messaging") | out-null 
[Reflection.Assembly]::LoadWithPartialName("System.Text") | out-null 
. 
. 
$enum = $queue.GetMessageEnumerator2(); 

while($enum.MoveNext()) 
{ 
    $tran = new-object System.Messaging.MessageQueueTransaction; 
    $tran.Begin(); 

    #$msgContent 
    $message = $enum.Current; 

    $msg = new-object System.Messaging.Message; 
    $msg.BodyStream = $message.BodyStream; 
    $queue.Send($msg, $tran); 

    $tran.Commit();   
} 
. 
.