Note: In September 2019, Pivotal changed the name of Pivotal Cloud Foundry (PCF) to Pivotal Platform.
The Solace Message Router Appliance is a high performance hardware-based message broker that supports higher throughput with lower, more predictable latency than any other messaging technology. For use cases where applications or microservices running in Pivotal Cloud Foundry (PCF) require exceptional performance and/or “five nines” reliability the appliance can be a perfect fit. With this post I’ll explain how the integration works, and provide step-by-step instructions to make it happen.
Since the Solace appliances run outside of the PCF ecosystem they don’t appear as part of the PCF marketplace, but cloud operators or developers can create user-provided service instances that enable applications to use services not natively available in the marketplace.
The user-provided service instances will deliver service credentials to the applications at runtime, which mimics the functionality provided by our Solace Messaging for PCF Tile. The diagram below illustrates how this integration enables messaging between an application running in PCF and a hardware appliance located outside PCF.
The basis of configuring user-provided service instances has been documented by Pivotal and can be found here.
From a Solace perspective, it is important that you set the list of environment variables specific to the Solace messaging service. This will enable components such as the Solace Spring Cloud Connector to properly look up environment values regardless of whether it was provided via a user provided service or the Solace Service Broker (Tile form).
This list has been provided here.
The last step is to set up the user-provided service in PCF. The below examples contain all of the protocol options Solace makes available:
cf create-user-provided-service test -p “{ “amqpTlsUris”: [ “amqps://:” ], “amqpUris”: [ “amqp://:” ], “jmsJndiTlsUris”: [ “smfs://:” ], “jmsJndiUris”: [ “smf://:” ], “mqttTlsUris”: [ “ssl://:” ], “mqttUris”: [ “tcp://:” ], “mqttWsUris”: [ “ws://:” ], “mqttWssUris”: [ “wss://:” ], “restTlsUris”: [ “https://:” ], “restUris”: [ “http://:” ], “smfHosts”: [ “tcp://:>” ], “smfTlsHosts”: [ “tcps://:>” ], “smZipHosts”: [ “tcp://:>” ], “webMessagingTlsUris”: [ “https://:” ], “webMessagingUris”: [ “http://:” ], “managementHostnames”: [ “” ], “managementUsername”: “”, “managementPassword”: “”, “msgVpnName”: “”, “clientUsername”: “test-username”, “clientPassword”: “”, “activeManagementHostname”: “”}”
cf create-user-provided-service test -p “{ “amqpTlsUris”: [ “amqps://:” ], “amqpUris”: [ “amqp://:” ], “jmsJndiTlsUris”: [ “smfs://:” ], “jmsJndiUris”: [ “smf://:” ], “mqttTlsUris”: [ “ssl://:” ], “mqttUris”: [ “tcp://:” ], “mqttWsUris”: [ “ws://:” ], “mqttWssUris”: [ “wss://:” ], “restTlsUris”: [ “https://:” ], “restUris”: [ “http://:” ], “smfHosts”: [ “tcp://:>” ], “smfTlsHosts”: [ “tcps://:>” ], “smZipHosts”: [ “tcp://:>” ], “webMessagingTlsUris”: [ “https://:” ], “webMessagingUris”: [ “http://:” ], “managementHostnames”: [ “” ], “managementUsername”: “”, “managementPassword”: “”, “msgVpnName”: “”, “clientUsername”: “test-username”, “clientPassword”: “”, “activeManagementHostname”: “”}”
Once you have completed this step, you’ll be able to bind the service to an application and experience the power of our hardware message router.