Editor’s Note: The VMR (Virtual Message Router) mentioned in this post is now Solace PubSub+.

Let me share with you some good news for developers interested in trying out or getting started on the JMS standard based features of the Solace Message Router with Solace JMS: After installing and starting a Solace Virtual Message Router (VMR), it will now take you less than a minute to get from zero to having a working JMS sample code fetched from GitHub, all built and running to get your first JMS message exchanged with the Solace Message Router.

With the Solace APIs Now Available via Maven Central, the build will automatically pull down the required Solace JMS client libraries. Developers can get right to productivity focusing on their messaging applications. This is all you need to do to try out the Solace JMS Getting Started Samples, assuming you have a Solace VMR running, JDK and Git installed:

git clone https://github.com/SolaceSamples/solace-samples-jms
cd solace-samples-jms
./gradlew assemble
./build/staged/bin/topicPublisher <VMR_HOST>

Topic Publisher initializing...
Connected. About to send message 'Hello world!' to topic 'T/GettingStarted/pubsub'...
Message sent. Exiting.

To achieve this, I have recently updated the basic Solace JMS samples on GitHub with a developer friendly way to dynamically create JMS administered objects.

Dynamically Creating JMS objects

Administered Objects, a key concept in the JMS standard, are objects containing configuration information about a JMS provider, in our case the Solace message router, to be used by JMS clients. The standard defines two objects: ConnectionFactory for creating connections and Destination for addressing topics and queues.

When using Solace dynamic mode, there is no need to administratively provision these objects on the Solace message router – it is enough to programmatically create a ConnectionFactory, Topic or Queue as Java objects in your code, set the required properties and they are ready for use for messaging.

At its heart, it is matter of instantiating the Solace implementation of a javax.jms.ConnectionFactory object and enabling dynamic creation of the necessary objects on the router:

SolConnectionFactory cf = SolJmsUtility.createConnectionFactory();
cf.setDynamicDurables()=true; // To create physical objects on the router as needed
Connection connection = cf.createConnection();

For developers using the Solace message router, this is a simple way to create and use a connection factory, which doesn’t require any configuration on the router side. The updated Publish/Subscribe and Persistence with Queues JMS samples provide more details.

The Solace message routers support multiple ways to create and customize connection factories to unlock unique Solace messaging features. Let me summarize further options for you and if you want to learn more, the new Obtaining JMS objects using JNDI tutorial provides all the details in an easy to consume format.

Using JNDI to lookup JMS objects

Of course, the JMS standard way of provisioning administered objects on the JMS message broker and using JNDI lookup of the pre-configured connection factories and destinations on a JNDI standard compliant server is also supported.

Using the built-in JNDI store

What the Solace message router adds here is that it has a built-in JNDI store that will publish the provisioned objects, making provisioning a one-step process and allowing the configuration and publishing of Solace specific properties at one place.


Using a Third Party JNDI Store

As an alternative, it is still possible to use a third party JNDI store, such as an LDAP server to lookup JMS objects.

Once the SolConnectionFactory object has been retrieved, it can be also customized to unlock Solace message router features by setting JMS properties.


Let’s start experimenting! I encourage you to start exploring by setting up your own VMR if needed, then trying out and building upon our JMS samples, which make it easy to learn basic JMS/JNDI or prototyping advanced functionality with the Solace message router.


Solace logo

Solace helps large enterprises become modern and real-time by giving them everything they need to make their business operations and customer interactions event-driven. With PubSub+, the market’s first and only event management platform, the company provides a comprehensive way to create, document, discover and stream events from where they are produced to where they need to be consumed – securely, reliably, quickly, and guaranteed.

Behind Solace technology is the world’s leading group of data movement experts, with nearly 20 years of experience helping global enterprises solve some of the most demanding challenges in a variety of industries – from capital markets, retail, and gaming to space, aviation, and automotive.

Established enterprises such as SAP, Barclays and the Royal Bank of Canada, multinational automobile manufacturers such as Renault and Groupe PSA, and industry disruptors such as Jio use Solace’s advanced event broker technologies to modernize legacy applications, deploy modern microservices, and build an event mesh to support their hybrid cloud, multi-cloud and IoT architectures.