Provisioning providers
Messaging queue provisioning provider
Local messaging queue
ActiveMQ Artemis is used as JMS Broker. For wildfly instances, Artemis 1.x is provided by the container. For standalone instances, Artemis 2.x is used and configured automatically.
On default, Artemis creates a queue with the name "Provisioning" (Artemis extends it with the prefix "jms.queue"). In addition, Artemis creates the two following queues:
- An expiration queue with the name "ExpiryQueue". Messages whose configured time to live is expired are moved to this queue.
- A dead letter queue with the name "DLQ". Messages are moved to this queue when the maximum of 10 failed delivery attempts has been reached.
The queue names are fix and cannot be changed. Internally, nevisIDM connects via an in-vm connector. External clients can access the queues via TCP.
The JMS queue for standalone instances supports AMQP protocols (besides the own "Core" protocol of ActiveMQ Artemis).
You can use the properties in the file nevisidm-prod.properties to configure the JMS provisioning module.
Messages are paged to disk, when the size of all messages in memory for an address exceeds the maximum size. Paging of messages is done transparently into and out of memory as they are needed.
Disk Space
Ensure that there is always enough disk space available for writing to the messaging queue. Writing to the messaging queue will block the current transaction when the corresponding disk reaches 99% disk usage. You set the messaging queue location in the property application.modules.provisioning.jmsqueue.storage.location of the nevisidm-prod.properties file.
WildFly
With wildfly deployment, make sure that the user of the JMS queue is configured and that the permissions for the queue are given. For more information, see JMS provisioning message persistence]".
Note that WildFly will be deprecated as of release 2.75.
The messaging can also be configured to provision events to a remote message queue. The events are transmitted with the AMQP protocol, therefore the remote message queue must support AMQP.
Remote messaging queue
Note that if you configure a remote message queue, the local messaging queue is not exposed over TCP anymore.
WildFly
The remote messaging queue is only supported in the standalone deployment. It is possible to configure a JMS bridge]" in wildfly deployment for setups where messages must be provisioned to a remote queue.
Note that WildFly will be deprecated as of release 2.75.
Duplicate Messages
In case of failures after transmission but before acknowledgment, message transmission is repeated. Hence, the destination might receive duplicate messages after a failure. If supported, the destination queue provider should enable automatic duplicate message detection and removal.
Remote messaging queue setup
To enable provisioning to a remote message queue, configure the messaging.remote.uri property in the " [nevisidm-prod.properties]" file. The following formats are supported:
- A URI according RFC 2396 of the format
<scheme>://<username>:<password>@<host>:<port>/<queuename>
- An Azure service bus endpoint, that is, a Primary Connection String of the format:
Endpoint=sb://<namespace>.servicebus.windows.net/;SharedAccessKeyName=<sasKeyName>;SharedAccessKey=<sasKey>=;EntityPath=<queuename>
Examples:
Example
# AMQP:
messaging.remote.uri=amqp://user:[email protected]:5672/remoteQueue
messaging.remote.uri=amqps://user:[email protected]:5671/remoteQueueTls
messaging.remote.uri=Endpoint=sb://example-namespace.servicebus.windows.net/;SharedAccessKeyName=ClientSharedAccessKey;SharedAccessKey=<SasKey>=;EntityPath=<queuename>
Endpoint=sb://nevisidm-test.servicebus.windows.net/;SharedAccessKeyName=;SharedAccessKey=hWmCLiwtWSeaEaTVTg=;EntityPath=remote-queue