We have a custom Rabbit-MQ adapter that has a few issues. When we restart the host-instances, the adapter may get “stuck” unless we restart the associated receive locations. So, I wrote a Powershell to restart all RabbitMQ receive locations that are currently enabled.
<pre>
cls
#
# Restart All RabbitMQ Receive Locations that are currently enabled
#
$showDate = Get-Date -DisplayHint Date
Write-Host "Started at $showDate"
##Add-PSSnapIn -Name BiztalkFactory.PowerShell.Extensions #NOTE: Must be in 32-bit version of Powershellto use this SnapIn
#cd "Biztalk:\Applications\<All Artifacts>\Receive Locations"
cd "Biztalk:\Applications"
$apps = get-childitem
# $apps = @("Echo.BSSR.Surface.LTLShipmentOut204") # use this to limit to a list/array of specific Apps
foreach ($app in $apps)
{
Write-Host "APP=$($app.Name)"
cd "Biztalk:\Applications\$($app.Name)\Receive Locations"
$rcvlocs = get-childitem
foreach ($rcvloc in $rcvlocs)
{
if ($rcvloc.Address.Contains("rabbit"))
{
Write-Host " $($rcvloc.Name) Enabled=$($rcvLoc.Enable) "
if ($rcvloc.Enable -eq $TRUE) #only restart receive locations that are started
{
Disable-ReceiveLocation $rcvloc.Name
Enable-ReceiveLocation $rcvloc.Name
#Write-Host " Restarted $($rcvloc.Name)"
Write-Host " Restarted "
}
}
}
}
$showDate = Get-Date -DisplayHint Date
Write-Host "Completed at $showDate"
</pre>