2014-09-03 2 views
0

Я использую NSB 4.6.4. Я знаю, что я мог бы использовать следующий код в моем процессе хозяина самостоятельно создавать необходимые очереди и Raven DB документы специально для моей конфигурации:Как декларативно предварительно установить определенные очереди для собственного хоста NServiceBus

Configure.With() 
.UnicastBus() 
.CreateBus() 
.Start(() => Configure.Instance.ForInstallationOn<Windows>().Install()); 

Но есть ли способ, чтобы получить эти предварительно установленные перед моим процесс запущен, отдельно декларативным способом (не запуская код)?

ответ

0

Вы можете использовать PowerShell, чтобы сделать это, посмотрите в managing NserviceBus using PowerShell article

+0

Мне нужно предварительно установить конкретный конечной точкой и ее очередями в MSMQ, для каждого app.config в моем хост-процессе. Не могли бы вы указать мне конкретную команду PS для этого? Я попробовал «Install-NServiceBusMSMQ», но это ничего не делает. –

+0

@GaryZhang, вы можете использовать [простой PS для создания своих очередей] (http://blogs.msdn.com/b/sajay/archive/2010/03/18/powershell-script-to-create-an-msmq. ASPX). Убедитесь, что они созданы как транзакционные очереди. –

0

На основе последнего комментария Шона, вот сценарий Powershell я использую:

[Reflection.Assembly]::LoadWithPArtialName("System.Messaging") 
$msmq = [System.Messaging.MessageQueue] 
$userName = "Users" 
$baseQueueName = ".\private$\myQueueName" 
$mainQueue = $baseQueueName 
$retryQueue = $baseQueueName + ".retries" 
$timeoutQueue = $baseQueueName + ".timeouts" 
$timeOutDispatcherQueue = $baseQueueName + ".timeoutsDispatcher" 
$nameArray = $mainQueue, $retryQueue, $timeoutQueue, $timeoutDispatcherQueue 
for ($i=0; $i -lt $nameArray.length; $i++) 
{ 
If ($msmq::Exists($nameArray[$i])) 
{ 
Echo ($nameArray[$i] + " queue already exists . . . skipping.") 
} 
else 
{ 
Echo ("Creating queue '" + $nameArray[$i] + "'.") 
# second argument of 1 indicates Transactional Queue 
$qObject = $msmq::Create($nameArray[$i], 1) 
} 

Echo ("Adding Permissions for '" + $userName + "' to queue '" + $nameArray[$i] + ".") 

$q2 = New-Object System.Messaging.MessageQueue $nameArray[$i] 
$q2.SetPermissions($userName, 
[System.Messaging.MessageQueueAccessRights]::FullControl, 
[System.Messaging.AccessControlEntryType]::Set) 
} 
Смежные вопросы