I have never heard of a Solace message broker, except for RabbitMQ which is used in VMware architecture. Well, I might come across some message brokers years back but did not interact enough. Since days, I was playing around with a message broker which is from Solace. Before writing further, I would like to thanks all the people who were helping me to understand the fundamental of Solace Messaging. I should also admit that I’m pretty new to it and I will make sure to make anyone understand from the very basic what is this all about. One of the challenging issues is about many new terms suddenly been introduced to me. Moreover, interacting with Solace via the terminal console is something new to get used to. So, I had no alternative than to go back to old notes, learn and refresh my memory about the fundamentals of Networking, distributed and parallel running systems, etc. So let’s start.
A messaging broker is a piece of software that translates or converts a message using a messaging protocol from the sender to the receiver. There are many messaging brokers out in the wild run out by big companies such as Google, RabbitMQ, IBM, etc.. But here, we are looking specifically at Solace, precisely the Solace PubSub + event broker which is free and can easily run on virtual environments.
I won’t go into the details of how to import the free Solace OVA into a virtual environment. I’m using VirtualBox for that purpose. However, in the real world, there are Solace Appliance with proprietary software running. But the fundamentals and core concepts remain the same.
1. After importing, the OVA into your hypervisor, you should be able to boot on the OS. You may need to enable virtualization at the hardware level to be able to run Virtual environments. By default, the username is “sysadmin“ and the OS will prompt you to change the password. So change it and get into the OS.
2. Solace is basically run on physical hardware appliances. However, Solace provided the operating system if anyone else wants to run it in a different environment. You will notice that there are some TCP ports already opened such as SSHD on port 2222 and 22, Dataplane on other ports. Some UDP services such as dhclient and the bus adapter.
All the Dataplane is one process with many ports opened. It’s the docker container installed within the Image. The rest are the SSH, NGINX, to access the GUI.
3. If you came across my blog here on using Docker, you will easily access the docker containers. You can do a docker ps -a to see the running container.
A docker images will show you the version of the container as well as a docker ps -a will show you the container. You can get into the container by doing a docker exec -it <container ID>
4. You can easily stop and start solace service with ‘solacectl’ command.
5. Let’s now see the logs. The logs are located at /var/lib/docker/volumes/jail/_data/logs. You can see the logs with sudo permission. So whenever, you start the service, by default, the logs will populate whatever is detected such as the state of the messaging system and system information. Let’s inspect the log file.
These are the Internal Redundancy State—The internal state of the Guaranteed Messaging Redundancy facility.
SYSTEM_AD_MSG_SPOOL_CHG – means that there is an event about the message spool changes state.
There are 6 states of the Assured Delivery (AD) of messages which are Configuration Status, Redundancy Status, Auto-Revert, Redundancy-Mode, Active-Standby Role, and Failover criteria. More information here on Configuring and Managing – Monitoring Appliance Redundancy.
This system log is propagated twice in both the event and system log file.
6. SYSTEM_LINK_ADB_LINK means the physical connectivity of the blades. – ADB (Assured Delivery Blade). Its appended to the prefix DOWN/UP
Solace is usually run on Solace blade appliance, thus the word “blade”.
7. To understand, if an ADB mate link is down or absent, this message is logged.
8. SYSTEM_SERVICE_LISTEN_PORT will take the prefix enable or disable when HTTP, SEMP, or SMF services are being shutdown or activated.
SMF and SEMP are few of the services supported by Solace PubSub+. There are much more services explained here in Configuring/Managing Services Section.
- Solace Message Format (SMF)—This service allows clients to communicate with an event broker on the Message Backbone interface.
- Solace Element Management Protocol (SEMP)—This service allows management applications to communicate with an event broker on the Management interface.
9. Now that the services supported by Solace is up and running, the log will throw out the state of the message spool from standby to activating and then to active. Since its a standalone box, the message spool .
10. Also there is a feature in solace called config-sync, which automatically synchronize services. When the event broker is used in High Availability mode, it should be up. This is a standalone box and it is naturally down.
11. It also become the primary virtual router and ready to sync with a second one for guaranteed messaging.
12. Now, that the services is up and ready, and solace is ready to be managed, the following log can also be seen.
13. In solace, there is a single message-vpn called “default”. On appliances, it is disabled by default. But for software event brokers, which I’m using right now on my virtual box, it is enabled. It cannot be deleted and all clients can accessed it. During start of the service, since I’m on a virtual machine, the log it should show the message-vpn is up and running. This event is sent when a client disconnects to the message broker and reconnect using default username message broker. It will also show that the VPN state is up.
14. This means that the specified virtual router is now providing service. If we change the state to standby, it will said SYSTEM_HA_VR_STATE_STANDBY which means the router is not providing any services.
In future solace articles, I will provide basic commands to play around the solace messaging virtual router. The logs are sometimes not written in an orderly fashion, hence, one has to understand what are the states and the prefix which gives more precise information.