It’s with great excitement that we announce that development of PubSub+ Event Portal has reached Early Access (aka MVP) Readiness! A big shout out to our Development and Product Management team for achieving this significant milestone.
There are a few items of note for you to find out more information around this significant step forward:
- PubSub+ Event Portal Web Page
- Blog post: PubSub+ Event Portal Instantiated!
- PubSub+ Event Portal Demo
We welcome any and all feedback, and look forward to growing this initiative!
I wanted to share some exciting news - Solace PubSub+ is now an option on the Spring Initializr hosted at https://start.spring.io/!
Spring Initializr allows developers to generate Spring Boot projects pre-populated with the dependencies they need to get started quickly. Projects can be generated directly on the site, and also from the cli and supported IDEs. Learn more in a blog here: https://solace.com/blog/solace-pubsub-spring-initializr/.
When selecting the Solace PubSub+ option developers will have the
solace-jms-spring-boot-starter added to their project dependencies. This will of course allow them to use our Spring Boot JMS Starter in conjunction with all of Spring’s built-in niceties for JMS. These niceties, such as annotations like @JmsListener and features such as Session management, make it as easy as possible for Spring Developers to get started using PubSub+.
I've built a tool for myself to easily backup and provision the VPN. The basic idea is to recursively GET all config from a VPN and write it down into a single JSON file, and you can do it reversely to provision the VPN (event after you modified the JSON file).
Please access https://github.com/flyisland/sempv2 to get this tool, hope it could be useful for you too!
Feedbacks are welcome (in here or in the github issues).
Need your input around what solace team advises in terms of best practices.
We have a java app/service that runs independently. It subscribes to multiple topics(both solcache and normal solace topics) and multiple queues. The multiple topics and queues are the messages published by other services/apps.
As per this thread https://solace.community/discussion/77/subscribe-to-multiple-topics-inside-same-session , The topic dispatcher feature isnt available in JCSMP library atm. This limitation would apply to multi queue subscribe as well, as a new consumer is created and previous one closed by the FlowReceiver too.
To get around this should we:
1) Write our own TopicDispatch functionality based on bytesXMLMessage.getDestination().getName() ? Incase of queues there is an added complexity in that this method returns the name of the topic( mapped to the queue we are subscribing on) that this msg was published on rather than the queue name.
2) Create a seperate JCSMP session(TCP Connection) for each topic and queue that we subscribe to ? We are looking at about a dozen connections for each of our apps. So about 150(max) tcp connections to our solace VPN which atm allows a max of 500 connections.
3) Get all our topics and queues mapped to a single/fewer queues and then do a message dispatch based on the value set in bytesXMLMessage.getApplicationMessageType() ?
4) Any other more elegant ways to tackle this ?
Simple cURL REST POST and python MQTT receiver to move a file across solace.
1. Create directory with files for sending: 'sender'
2. Add password to 'restpass' variable
resthost=mr1nljqp0y2dox.messaging.solace.cloud restport=9000 restuser=solace-cloud-client restpass=password filemask=./sender/* for filepath in $filemask do # List all the files in subdirectory file=$(basename $filepath) curl -v -u $restuser:$restpass \ -X POST http://$resthost:$restport/file/upload/binary/$file \ -H "Solace-User-Property-File-Name: '"$file"'" \ -H "Content-Type: application/octet-stream" \ --data-binary @$filepath done
Python MQTT Listener to file
1. Create directory 'receiver'
2. add password to username_pw_set
import paho.mqtt.client as mqtt import os def on_log(client, userdata, level, buf): print("log: ",buf) # The callback for when the client receives a CONNACK response from the server. def on_connect(client, userdata, flags, rc): print("Connected with result code "+str(rc)) # Subscribing in on_connect() means that if we lose the connection and # reconnect then subscriptions will be renewed. client.subscribe("file/#") # The callback for when a PUBLISH message is received from the server. def on_message(client, userdata, msg): #print(msg.topic) #print("") filename="receiver/" + os.path.basename(msg.topic) print("Writing:"+filename) f=open(filename,"wb") f.write(msg.payload) f.close() client = mqtt.Client() client.on_log=on_log client.on_connect = on_connect client.on_message = on_message client.username_pw_set(username="solace-cloud-client", password="password") client.connect("mr1nljqp0y2dox.messaging.solace.cloud", 1883, 60) # Blocking call that processes network traffic, dispatches callbacks and # handles reconnecting. client.loop_forever()