New-RabbitMqConnectionFactory.ps1
Function New-RabbitMqConnectionFactory { <# .SYNOPSIS Create a RabbitMQ client connection .DESCRIPTION Create a RabbitMQ client connection Builds a RabbitMQ.Client.ConnectionFactory based on parameters, invokes CreateConnection method. .PARAMETER ComputerName RabbitMq host If SSL is specified, we use this as the SslOption server name as well. .PARAMETER Credential Optional PSCredential to connect to RabbitMq with .PARAMETER Ssl Optional Ssl version to connect to RabbitMq with If specified, we use ComputerName as the SslOption ServerName property. .PARAMETER vhost create a connection via the specified virtual host, default is / .EXAMPLE $Connection = New-RabbitMqConnectionFactory -ComputerName RabbitMq.Contoso.com -Ssl Tls12 -Credential $Credential # Connect to RabbitMq.contoso.com over SSL (use tls 1.2), with credentials in $Credential .EXAMPLE $Connection = New-RabbitMqConnectionFactory -ComputerName RabbitMq.Contoso.com # Connect to RabbitMq.contoso.com #> [cmdletbinding()] param( [string]$ComputerName, [PSCredential]$Credential, [System.Security.Authentication.SslProtocols]$Ssl, [parameter(Mandatory = $false)] [string]$vhost ) Try { $Factory = New-Object RabbitMQ.Client.ConnectionFactory #Add the hostname $HostNameProp = [RabbitMQ.Client.ConnectionFactory].GetField("HostName") $HostNameProp.SetValue($Factory, $ComputerName) if($vhost) { $vhostProp = [RabbitMQ.Client.ConnectionFactory].GetProperty("VirtualHost") $vhostProp.SetValue($Factory, $vhost) } #Add cred and SSL info if($Credential) { Add-RabbitMqConnCred -Credential $Credential -Factory $Factory -ErrorAction Stop } if($Ssl) { New-RabbitMqSslOption -Version $Ssl -ServerName $ComputerName -Factory $Factory -ErrorAction Stop } $CreateConnectionMethod = [RabbitMQ.Client.ConnectionFactory].GetMethod("CreateConnection", [Type]::EmptyTypes) #We're ready to go! Output is a connection $CreateConnectionMethod.Invoke($Factory, "instance,public", $null, $null, $null) } Catch { Throw $_ } } |