Configuring Event Brokers in Event Portal
You can configure client details and queues for a Solace event broker in Designer and use the configuration to add, update, and delete client credentials and queues on Solace event brokers. For information about configuring queues on event brokers using Cluster Manager, see Configuring Queues.
This page includes the following information:
- Setting Up Event Broker Configuration
- How Application Settings are Applied to Event Brokers
- Adding a Queue to an Application in Designer
- Sending Configuration Updates to an Event Broker
Setting Up Event Broker Configuration
To manage event broker configuration from Event Portal, you must complete several set-up steps.
-
Make sure that your operational event brokers support configuration management from Event Portal. The event brokers must be PubSub+ Cloud event broker services or Solace software event brokers or appliances running version 10.5 or later. For more information about creating an event broker service in PubSub+ Cloud, see Creating Event Broker Services.
-
Configure a connection between your operational event brokers in the runtime and Event Portal using one of the following options:
-
If you have event broker services in a Customer-Controlled Region or Dedicated Region in the same PubSub+ Cloud account, you can enable a connection between your event broker services and Event Portal. For more information see Connecting Event Broker Services to Event Portal With a PubSub+ Cloud Connection.
-
For all other supported event brokers, set up an Event Management Agent in Connected mode. For more information see Setting Up an External Event Broker with Event Portal Connection.
-
-
Enable runtime configuration for the environments containing the model event brokers that represent the operational event brokers you want to configure from Event Portal. For more information, see Creating and Managing Environments.
-
(Optional) Create Solace queue templates to define the queue configuration values you require on your event brokers. You can make using templates required in one or more environments and specify which templates are allowed in those environments.
-
(Optional) If client profiles are configured on the operational event broker, create client profile name templates so developers can select the correct client profile for the application in Designer. For more information about client profiles in PubSub+ Cloud, see Creating a Client Profile. You can make using templates required in one or more environments and specify which templates are allowed in those environment.
How Application Settings are Applied to Event Brokers
The following diagram shows how the events, consumers, and client details you add to an application relate to your runtime when you set up PubSub+ Cloud to configure event broker services from Event Portal.
-
In an application in Event Portal, you can specify events that the application publishes and consumers that subscribe to events. A consumer in the application represents a queue on the event broker that the runtime client application can bind to in order to consume messages from the queue. You can also specify the name of the client profile on the event broker that defines the ACL profiles and other settings that are applied to the runtime client application when it connects to the event broker.
-
When you add the application to an environment in Event Portal, you must also specify the client username and the credentials for basic authentication or group authorization that the runtime application uses to connect to the event broker and bind to the queue. Optionally, you can download an AsyncAPI document from the application that includes the event broker connection and authentication details to give to the application developer who is creating the runtime client application.
-
When Event Portal sends the configuration to the operational event broker, the following updates can occur on the event broker.
-
A queue is created or updated on the event broker for each Solace queue consumer with the properties and topic subscriptions specified by the queue configuration in Designer. If a queue with the same queue name already exists, the updates are applied to the existing queue.
-
The event broker is configured to apply the specified client profile for the client application when it connects to the event broker using the specifed username and credentials. If no client profile name is set, the application uses the default client profile on the event broker.
-
-
An application developer creates or updates a runtime client application to use the authentication credentials specified in Event Portal. When the client application authenticates with the operational event broker
-
it is assigned the client profile specified in Designer
-
it can bind to the queue that was configured in Designer and consume any event messages attracted by the topic subscriptions for the queue.
-
Adding a Queue to an Application in Designer
To add a Solace event queue that can be configured on an event broker to an application in Designer, perform these steps:
- On the Application Domains page, click the application domain that contains the application you want to update.
- Right-click the application in the graph view and select View Details.
- Click Open Application.
- In the Versions list, click More Actions next to the version that you want to add queue configuration to, then select Edit. If the application doesn’t have a version in Draft state, create a new version.
- In the Event Flows section, select Runtime Configuration.
- (Optional) To set the client profile used by the application, perform these steps:
- Click Manage Client Profile Name.
- If client profile name templates have been set up in Runtime Event Manager, select a client profile name from the Template list, or click Customize Name to type the name of a profile that has been set up on the operational event broker.
- If no client profile name templates have been set up, type a client profile name in the Client Profile Name field.
- Click Apply.
If you don't set a client profile name, the operational event broker uses the default client profile for the application.
- Click Add Consumer.
- Type a Name for the consumer.
- In the Type list, select Solace Event Queue.
- To add a topic subscription to the consumer, perform these steps:
- Click Add Subscriptions to add a topic subscription to the consumer.
- Enter the topic subscription. You can use
*
and>
as wildcard characters to subscribe to a group of related topics. For more information, see Topic Subscriptions. When you enter a topic subscription, a Preview of Attracted Events shows all event versions with a matching topic address in Designer that are published by an application version that has been added to at least one modeled event mesh. - Click Add Subscription.
- When you are finished adding subscriptions, click Close .
- To add queue configuration details to a consumer, perform these steps:
- Click Manage Configuration.
- (Optional) If Solace queue templates have been set up in Runtime Event Manager, select a configuration from the Template list.
- If you want to conform to the template, enter values for the queue in the available fields. The fields available and the allowable values are defined in the template. The Queue Name field is always required. If the queue you are configuring already exists on the event broker service, the
"queueName"
in the consumer and on the event broker service must match. Otherwise, sending the configuration details to the event broker service creates a new queue. - If you want to enter custom configuration details instead of following the template, click Customize Configuration and add the necessary details.
- (Optional) Select Full Configuration and review the configuration sent to the event broker. The configuration may include properties with required values that can't be set in the consumer.
- Click Apply.
- Click Save Version.
Queue Configuration Properties
The JSON queue configuration for the consumer can include the following properties. Some of these properties are not supported by earlier event broker versions.
Property | Description | |||
---|---|---|---|---|
Access Type (included in default configuration) |
Specifies how messages are delivered when multiple consumer flows are bound to the queue. The default value is
|
|||
Consumer Acknowledgment Propagation |
Enables or disables the propagation of consumer acknowledgments (ACKs) received on the active replication Message VPN to the standby replication Message VPN. The default value is |
|||
DMQ Name |
Specifies the name of the dead message queue (DMQ) used by this queue. The default is Solace recommends using a separate DMQ for each queue and topic endpoint that needs one and setting the DMQ name to the name of the queue, followed by "_dmq", For example if a queue named A DMQ collects undelivered messages that would otherwise be discarded from the queue because the Maximum TTL or Maximum Redelivery Count has been reached. |
|||
Enable Client Delivery Count |
Enables or disables the ability for client applications to query the message delivery count of messages received from the queue. This is a controlled availability feature. Please contact support to find out if this feature is supported for your use case. The default value is |
|||
Delivery Delay |
Specifies the delay, in seconds, to apply to messages arriving on the queue before the messages are eligible for delivery. The default value is |
|||
Maximum Consumer Count Alert Thresholds |
Specifies event bind count thresholds for the queue:
|
|||
Messages Queued Quota Alert Thresholds |
Specifies message spool usage thresholds for the queue:
|
|||
Reject Low Priority Messages Alert Thresholds |
Specifies message spool usage thresholds for the queue:
|
|||
Maximum Consumer Count |
Specifies the maximum number of consumer flows that can bind to the queue. The default value is |
|||
Maximum Delivered Unacknowledged Messages per Flow |
Specifies the maximum number of messages delivered but not acknowledged per flow for the queue. The default value is |
|||
Maximum Message Size |
Specifies he maximum message size allowed in the queue, in bytes. The default value is |
|||
(included in default configuration) |
Specifies the maximum message spool usage allowed by the queue, in megabytes. A value of |
|||
Maximum Redelivery Count |
Specifies the maximum number of times the queue will attempt redelivery of a message prior to it being discarded or moved to the DMQ. A value of |
|||
Maximum TTL |
Specifies the maximum time, in seconds, a message can stay in the queue when |
|||
|
Specifies the name of the Message VPN hosting the queue. This property is not necessary for PubSub+ Cloud event broker services. Solace software event brokers and appliances can have multiple Message VPNs. |
|||
Owner |
Specifies the client username that owns the queue. By default, users with access to PubSub+ Broker Manager have ownership privileges. Use this parameter to give ownership to the client application.The queue owner has full unlimited permissions for the queue. The owner can consume, delete, or modify topics in the queue. |
|||
Count |
Specifies the count of partitions of the queue. This setting is only relevant for queues with an access type of non-exclusive. When set to |
|||
Rebalance Delay |
Specifies the delay, in seconds, before a partition rebalance is started once needed. The default value is |
|||
Rebalance Max Handoff Time |
Specifies the maximum time, in seconds to wait before handing off a partition while rebalancing. The default value is |
|||
Non-Owner Permission |
Specifies the access level given to client applications other than the queue owner. The default value is
|
|||
Queue Name (included in default configuration) |
Specifies the name of the queue. This property is required. |
|||
Delayed Redelivery |
|
|||
Initial Delay |
Specifies the delay to be used between the first two redelivery attempts, in milliseconds. The default value is |
|||
Maximum Delay |
Specifies the maximum delay to be used between any two redelivery attempts, in milliseconds. The default value is |
|||
Multiplier |
Specifies the amount each delay interval is multiplied by after each failed delivery attempt. This number is in a fixed-point decimal format in which you must divide by 100 to get the floating point value. For example, a value of |
|||
Redelivery |
Enables or disables message redelivery. When enabled, the number of redelivery attempts is controlled by |
|||
Reject Low Priority Messages |
Enables or disables the checking of low priority messages against the |
|||
Reject Low Priority Messages Limit |
Specifies the number of messages of any priority in the queue above which low priority messages are not admitted but higher priority messages are allowed. The default value is |
|||
Reject Messages to Sender on Discard |
Specifies when to return negative acknowledgments (NACKs) to sending clients on message discards. Note that NACKs cause the message to not be delivered to any destination and Transacted Session commits to fail. The default value is
|
|||
Respect Message Priority |
Enables or disables the respecting of message priority. When enabled, messages contained in the queue are delivered in priority order. The default value is |
|||
Respect TTL |
Enables or disables the respecting of the time-to-live (TTL) for messages in the queue. When enabled, expired messages are discarded or moved to the DMQ. The default value is |
Queue Configuration Example
The following JSON queue configuration example creates a queue on the event broker named samplequeue
with default values for all properties.
{ "queueName" : "samplequeue", "accessType" : "exclusive", "consumerAckPropagationEnabled" : true, "deadMsgQueue" : "#DEAD_MSG_QUEUE", "deliveryCountEnabled" : false, "deliveryDelay" : 0, "eventBindCountThreshold": { "clearPercent": 60, "setPercent": 80 }, "eventMsgSpoolUsageThreshold": { "clearPercent": 18, "setPercent": 25 }, "eventRejectLowPriorityMsgLimitThreshold": { "clearPercent": 60, "setPercent": 80 }, "maxBindCount": 1000, "maxDeliveredUnackedMsgsPerFlow": 10000, "maxMsgSize": 10000000, "maxMsgSpoolUsage": 5000, "maxRedeliveryCount": 0, "maxTtl": 0, "partitionCount": 0, "partitionRebalanceDelay": 5, "partitionRebalanceMaxHandoffTime": 3, "redeliveryDelayEnabled": false, "redeliveryDelayInitialInterval": 1000, "redeliveryDelayMaxInterval": 64000, "redeliveryDelayMultiplier": 200, "redeliveryEnabled": true, "rejectLowPriorityMsgEnabled": false, "rejectLowPriorityMsgLimit": 0, "rejectMsgToSenderOnDiscardBehavior": "when-queue-enabled", "respectMsgPriorityEnabled": false, "respectTtlEnabled": false }
Adding a Dead Message Queue to an Application
You can configure a dead message queue (DMQ) to receive messages that are discarded from a queue when they can't be delivered to the subscribing client. By default, messages are discarded from a queue in the following circumstances:
-
the maximum time-to-live (TTL) value for the message has been reached and the queue is configured to respect message TTL expiry times.
-
the number of redelivery attempts to the consumer for a message has reached the max redelivery count value for the original endpoint.
You can configure a Solace event queue in Designer to act as a DMQ for another Solace event queue by setting the appropriate attribute values for both queues.
To configure a DMQ for another Solace event queue, perform these steps:
- Configure a Solace event queue according to the instructions for Adding a Queue to an Application in Designer.
-
In the configuration for your queue, set the following values:
Attribute Description deadMsgQueue
Specify the
queueName
for the DMQ to send expired messages to. You can have one DMQ shared by multiple queues; however, Solace recommends using a separate DMQ for each queue that requires one and setting the DMQ name to the name of the queue, followed by "_dmq", for exampleMyQueue_dmq
.maxRedeliveryCount
Set this value if you want to specify the maximum number of times the queue attempts to deliver the message before the message expires. If you want to specify the maximum redelivery count, you must also set
redeliveryEnabled
totrue
.maxTtl
Set this value if you want to specify the TTL in seconds that the queue applies to messages when the message arrives in the queue. If you specify the maximum TTL, you must also set
respectTtlEnabled
totrue
.respectTtlEnabled
Set this value if you want messages that have not been delivered to expire at the end of the message TTL. If a message is not consumed and its TTL time is reached, the message is discarded or moved to a DMQ.
-
If it does not already exist, create a second Solace event queue to act as the DMQ for the first queue and set the
queueName
to match thedeadMsgQueue
value you set for the first queue.The DMQ does not need to subscribe to events. It receives only the expired messages from the first queue.
For instructions to configure DMQs in Mission Control, see Configuring Dead Message Queues.
Sending Configuration Updates to an Event Broker
If you update the configuration data or add new configuration data to a Solace event queue in an application after adding the application to an event broker, Update Required appears next to the names of the environments that the application appears in that have runtime event broker configuration enabled.
To send the updates to the runtime event broker, perform these steps:
- Click Expandnext to the environment to see the list of model event brokers.
- Click More Actions> Push Updates to Event Broker for the event broker that needs to be updated.
- Review the update to be sent to the event broker and click Update.