RabbitMQ Server Manual Installation
About this Document
In addition to the automated installation provided by Matrix42 this article describes the manual installation. This allows you to either install RabbitMQ with own sources or adapt an resisting RabbitMQ installation to be used with Matrix42 products.
Download Binaries
- Open Matrix42 Marketplace
- Login with your Matrix42 Account
- Navigate to Secure Unified Endpoint Management
- Select Secure Unified Endpoint Management (UUX for SUEM)
- Locate the Current Release Section and select Download UUX for SUEM
- Download the latest Matrix42 Service Bus Rabbit MQ package
- Extract your RabbitMQ Installation Package
RabbitMQ Installation Package content
The current RabbitMQ getting started package contains:
- Erlang OTP 26.2.5.2
- TTP is a set of Erlang libraries and design principles providing middle ware to develop these systems. It includes its own distributed database, applications to interface towards other languages, debugging and release handling tools. It is a pre-requisite for the RabbitMQ server.
- RabbitMQ Server 3.13.6 for 64bit Windows system
- Uninstall-RabbitMqServer_NonSSL.ps1 PowerShell script
- RabbitMQ-Online_Help.url
Prerequisites and considerations
This manual is for partners and customers which are familiar with message broker systems in general and specifically with RabbitMQ. If this is not the case we recommend to follow the automated installation provided by Matrix42 which installs and configures RabbitMQ.
RabbitMQ Firewall Settings
Please open the following Ports used by RabbitMQ:
Port | Purpose |
---|---|
5672, 5671 | Used by the protocol AMQP 0-9-1 and 1.0 clients with and without TLS |
15672 | HTTP API clients, management UI and rabbitmqadmin (only if the management plugin is enabled) |
Manual Installation
For the manual installation, please open the RabbitMQ_InstallPackage.exe with e.g. 7-Zip and extract the content.
- rabbitmq-server-3.13.6.exe
- otp_win64_26.2.5.2.exe
- Install-RabbitMqServer.ps1
- CreateRabbitMqExchangeAndQueues.ps1
Erlang OTP Installation
- Start the 64-bit Erlang OTP installer, e.g. otp_win64_26.2.5.2.exe
- Click next
- Click next
- Click install and confirm all installations
- Click Close
Create Environment Variable for Erlang
- Launch Control Panel and select System
- Click Advanced system settings
- Select Environment Variables
- Locate the System variables section and review if the ERLANG_HOME variables is already present
- In case the variable is not present, add the variable and put the value to the correct installation path:
Variable name | ERLANG_HOME |
Variable value | C:\Program Files\Erlang OTP |
RabbitMQ Server Installation
- Start the Rabbit MQ installer, e.g. rabbitmq-server-3.13.6.exe
- Press Next
- Click Install
- Press Next
- Click Finish
Create Environment Variable for Rabbit MQ
- Launch Control Panel and select System
- Click Advanced system settings
- Select Environment Variables
- Locate the System variables section and review if the ERLANG_HOME variables is already present
- In case they are not present, add the following two variables and put the values to the correct installation paths:
Variable name | RABBITMQ_BASE |
Variable value | C:\Program Files\RabbitMQ Server\rabbitmq_server-3.13.6 |
RabbitMQ Management Plugin Enablement
- Navigate back to your administrative command and change the directory to your installation folder:
cd C:\Program Files\RabbitMQ Server\rabbitmq_server-3.13.6\sbin\
- Execute the rabbitmq-plugins.bat with the following parameters:
rabbitmq-plugins.bat enable rabbitmq_management
- Open Services and review if the RabbitMQ Service is available and start the service if it is not already running.
- Now execute the following to start the whole RabbitMQ service:
rabbitmq-service.bat start
Add another system variable with RABBITMQ_SERVER that targets to the installation folder to run rabbitmq commands from any (administrative) Command Prompt without changing directory to the sbin folder. A restart the Command Prompt is required after adding the system variable.
Configuration
Open Management Console
- Use a web browser of choice and navigate to: http://localhost:15672
- Login as user guest with password guest as default credential.
- Navigate to Exchange and Queues and keep the current default configuration
Create Exchange and Queues
- Open Windows PowerShell as a Administrator
- Locate in your Windows Explorer the CreateRabbitMqExchangeAndQueues.ps1 under your downloaded and with 7-Zip extracted RabbitMQ Installation Package
cd C:\Users\vvalentine\Downloads\RabbitMQ_InstallPackage.4.19.1\RabbitMQ\
- Execute the following command and review the explanations about the provided parameters below:
.\CreateRabbitMqExchangeAndQueues.ps1
The script will ask you one after the other which subscription you want to create. Answer Y for each subscription that you want to create.
ManagerURL | The URL address of the RabbitMQ manager interface |
---|---|
VirtualHost | RabbitMQ is multi-tenant system: connections, exchanges, queues, bindings, user permissions, policies and some other things belong to virtual hosts, logical groups of entities. A virtual host has a name. When an AMQP 0-9-1 client connects to RabbitMQ, it specifies a vhost name to connect to. This name is required by the script to operate correctly. In our example above we used the VirtualHost "matrix42". |
Exchange Name | Also known as Topics, Exchanges are message routing agents, defined by the virtual host within RabbitMQ. An exchange is responsible for routing the messages to different queues. In our example above we used the ExchangeName "matrix42.suem.topic" |
Empirum Queue Name | EmpirumQueueName is the Queue used by your Empirum UEM Backend to publish messages. |
Service Store Queue Name | ServiceStoreQueueName is the Queue used by your UEM Console Backend to receive messages |
EgoSecure Queue Name | EgoSecure Queue Name is the Queue used by EgoSecure to publish messages |
Silverback Queue Name | Silverback Queue Name is the Queue used by Silverback to publish messages |
FastViewer Queue Name | FastViewer Queue Name is the Queue used by FastViewer/Remote Assistance to publish messages |
- Provide a username and press enter, e.g. rabbitmq
- Provide a password and press enter, e.g. password
Do not use the characters '/\@%#.* in the password, otherwise your created connection string will get invalid which you will recognize only later.
- Copy the presented connection string to your clipboard or any Text Editor
Review Exchanges and Queues
- Navigate back to your RabbitMQ Management Console
- Navigate to Exchanges
- You should see the matrix42.suem.topic
- Navigate to Queues
- You should see now 5 new queues
- matrix42.empirum.subscription
- matrix42.silverback.subscription
- matrix42.egeosecure.subscription
- matrix42.fastviewer.subscription
- matrix42.uux.subscription
- You should see now 5 new queues
- Navigate to Admin
- You should see now your previously entered administrative username
Change your current guest password
- Select your guest account
- Expand Update this user
- Enter a new password, e.g. Pa$$w0rd
- Confirm your password, e.g. Pa$$w0rd
- Press Update user
- Log out and Login with the new credentials
- Log out and Login with the recently created account during the script execution
You can also delete the guest user as this user must only be used during installation from and to localhost (https://www.rabbitmq.com/access-control.html).
Additional Notes and Next Steps
- When installing the RabbitMQ Server on the same server as Empirum make sure that the Matrix42 Empirum Service Bus Service is set for delayed startup.
- In case you are not using Empirum or you have additionally EgoSecure Data Protection in place, ensure to remove or add the queues as explained in Adjust Queues
- If you don't adjust the Queues and you are not using Empirum as an example, the created Empirum queue will ultimately collect all messages that are exchanged via RabbitMQ between the Unified User Experience (Service Store) and Silverback. This will cause a huge amount of resource consumption.
- Keep your Connection String ready and proceed with entering the Connection String into the different products as shown in the Enterprise Service Bus Guide
Adjust Queues
In case you are not utilizing Empirum, SiIverback or FastViewer or you have additionally EgoSecure Data Protection in place, you should consider to modify your created Queues.
Delete created queues
- Use a web browser of choice and open: http://localhost:15672
- Login with your username and password
- Navigate to Queues
- Select the queue you want to delete
- Expand Delete, press Delete Queue and confirm with OK
Add additional queues
By default, queues for the Unified User Experience (Service Store), Empirum, Silverback, FastViewer and EgoSecure are created. Additionally required queues can be created, e.g. if you are using EgoSecure Data Protection:
- Select Queues
- Press add a new queue
- Select your previously created Virtual Host, e.g. matrix42
- Type in matrix42.egocesure.subscription in the name field
- Click on Message TTL and enter 604.800 in the value field (this is the time in milliseconds how long messages stays in the queue if no one retrieves them)
- Click Add Queue
- Select the new queue in the table
- Expand Bindings
- Enter the exchange name i.e. matrix42.suem.topic in the From exchange field
- Click Bind
Allowed Characters
User and Password and Virtual Host must be URL encoded strings/Percentage Escape.
The "amqp" URI scheme
The syntax of an AMQP 0-9-1 URI is defined by the following ABNF rules. All names in these rules not defined here are taken from RFC3986.
amqp_URI = "amqp://" amqp_authority [ "/" vhost ] [ "?" query ] amqp_authority = [ amqp_userinfo "@" ] host [ ":" port ] amqp_userinfo = username [ ":" password ] username = *( unreserved / pct-encoded / sub-delims ) password = *( unreserved / pct-encoded / sub-delims ) vhost = segment
Once a URI has been successfully parsed according to this syntax, the connection parameters are determined as described in the following sections. Please review https://www.rabbitmq.com/uri-spec.html for additional information.
. Vhost
The vhost component is used as the basis for the virtual-host field of the connection.open AMQP 0-9-1 method. Any percent-encoded octets in the vhost should be decoded before the it is passed to the server.
Note that:
- The vhost component of the URI does not include the leading "/" character from the path. This makes it possible to refer to any vhost, not only those that begin with a "/" character.
- The vhost is a single segment. Therefore, any "/" characters that appear in the vhost name must be percent-encoded. URIs with multi-segment paths do not obey this specification.
The vhost component may be absent; this is indicated by the lack of a "/" character following the amqp_authority. An absent vhost component is not equivalent to an empty (i.e. zero-length) vhost name.