Solace PubSub+ agent
Target Solace PubSub+
Prerequisites
To have Gluesync working on your Solace PubSub+ instance you will need:
-
One topic namespace per entity collection you want Gluesync to publish to;
-
Valid broker credentials with permission to publish to the destination topics;
-
A trust store or certificate path if your deployment requires TLS verification;
-
Solace-side routing already prepared if you plan to use persisted messages.
Setup via Web UI
On-premises deployment
-
Hostname / IP Address: The host address of your PubSub+ cluster;
-
Port: Optional, defaults to
55555; -
Username: Username with read & write access role to the cluster;
-
Password: Password belonging to the given username;
-
Message VPN: The Message VPN name;
-
Certificate Path: Optional, needed when TLS trust-store verification is enabled;
-
Certificate Password: Optional, password for the configured certificate store;
-
SASL Mechanism: The SASL mechanism to use (e.g.,
PLAIN,SCRAM-SHA-256,SCRAM-SHA-512,EXTERNAL,GSSAPI); -
Security Protocol: The security protocol to use (e.g.,
PLAINTEXT,SSL,SASL_PLAINTEXT,SASL_SSL);
PubSub+ Cloud deployment
-
Hostname / IP Address: The host address provided by the Solace cloud console, including the protocol (e.g.,
tcps://xyz-abc.solace.cloud); -
Port: Optional, defaults to
55443; -
Username: Username with read & write access role to the cluster;
-
Password: Password belonging to the given username;
-
Message VPN: The Message VPN name;
-
Certificate Path: Optional, needed when TLS trust-store verification is enabled;
-
Certificate Password: Optional, password for the configured certificate store;
-
SASL Mechanism: The SASL mechanism to use, usually
SCRAM-SHA-256(e.g.,PLAIN,SCRAM-SHA-256,SCRAM-SHA-512,EXTERNAL,GSSAPI); -
Security Protocol: The security protocol to use, usually
SASL_SSL(e.g.,PLAINTEXT,SSL,SASL_PLAINTEXT,SASL_SSL);
Custom properties
-
usePersistedMessages: (optional, defaults to
false) If set totrue, Gluesync uses the Solace persistent message publisher for the entity. -
messagePriority: (optional, defaults to
4) Priority assigned to each published Solace message. -
ttlValue: (optional, defaults to
0) Message TTL in milliseconds. A value of0means no TTL is applied.
Message routing
Gluesync publishes every entity change to a topic derived from the entity collection and the CRUD action:
-
<collection>/insert
-
<collection>/update
-
<collection>/delete
Every message payload is JSON encoded and carries the entity key in the key message property. When a delete event is processed, Gluesync publishes the delete payload and then a tombstone message with an empty body.
Setup via Rest APIs
Here following an example of calling the Core Hub’s Rest API via curl to setup the connection for this Agent.
Connect the agent
curl --location --request PUT 'http://core-hub-ip-address/pipelines/{pipelineId}/agents/{agentId}/config/credentials' \
--header 'Content-Type: application/json' \
--header 'Authorization: ••••••' \
--data '{
"hostCredentials": {
"connectionName": "myAgentNickName",
"host": "XYZ-123.solacecloud.com",
"port": 55555,
"username": "",
"password": "",
"maxConnectionsCount": 100,
"enableTls": true,
"certificatePath": "/myPath/cert.p8"
},
"customHostCredentials": {
"messageVpn": "myMessageVpn"
}
}'
Troubleshooting
Here following the list of common errors.
-
Can’t see data published to my topics: If you’re looking to find your data published to the topics, make sure you have configured the correct topic namespace and that the topics are not filtered out by your subscription rules.
The most common error are usually as follow:
-
Topic name mismatch: make sure the topic name is correctly configured and matches the expected pattern. As an example, if you have configured the topic name as
myTopic, make sure you’re looking for messages in themyTopictopic. -
Missing permissions: make sure the broker account has the necessary permissions to publish to the configured topic.
-
Incorrect topic subscription when debugging from the PubSub+ Web UI: as Gluesync publishes messages with a specific topic pattern, make sure you’re subscribing to the correct topic pattern. For example, start by listening to every action on the topic namespace you’re interested in by subscribing to
#or>(foo/>will listen to all actions on thefootopic namespace, INSERT, UPDATE and DELETE).