Page History
...
This Trace SQL Store Component contains a Trace DAO implementation that can be used by the trace engine to store trace messages in a database.
Blueriq 14.8 introduces introduced the possibility to consume trace events that are pushed on a queue by the Trace Event Publisher Component and then store them in a database in an asynchronous way. See consume trace events.
...
In order to use this component, the
or Include Page _ProfileTrace _ProfileTrace Include Page
The latter profile This component will only write trace message to the database and not timeline messages. See Timeline SQL Store component for writing timeline messages to a separate database.
Add the artifact with groupId "com.blueriq"
and artifactId "blueriq-component-trace-sql-store"
as a dependency to your Blueriq runtime POM file if you want to depend on it.The trace can be used in different settings, to configure how the trace will behave, and how the timeline will behave. In the table below, different combinations of Include Page
...
...
Configuration
Database
Scripts to create the required database content are provided for the following databases:
...
...
Info |
---|
For customers that are upgrading an existing version of Blueriq, database upgrade scripts are provided in the Upgrade instructions when applicable. |
UI Text Box | ||
---|---|---|
| ||
Please make sure the trace-sql-store has a separate datasource. Using the same datasource for other components is known to cause errors. |
Use the following steps to configure the datasource:
...
The
...
language | powershell |
---|---|
title | application-externaldatasources.properties |
...
datasource name is trace-sql-store
...
.
...
Include Page | ||
---|---|---|
|
...
Code Block | ||||
---|---|---|---|---|
| ||||
blueriq.datasource.trace-sql-store.jndiName=java:/comp/env/jdbc/blueriqTrace
blueriq.hibernate.trace-sql-store.hbm2ddl.auto=validate
blueriq.hibernate.trace-sql-store.dialect=org.hibernate.dialect.SQLServer2012Dialect |
...
|
...
Supported dialects:
- org.hibernate.dialect.SQLServer2012Dialect (for SQL Server)
- org.hibernate.dialect.Oracle12cDialect (for Oracle)
- org.hibernate.dialect.H2Dialect (for H2) (we do not recommend using a H2 database in production environments)
Supported hbm2ddl.auto values:
- none
- validate
Consume trace events
The Trace SQL Store component can store trace messages directly in the database, but it is also possible to decouple the storage of trace messages using the Trace Event Publisher Component to publish trace events to a queue and then consume them using this component.
...
Note |
---|
The Trace SQL Store either stores trace messages in the database, or consumes trace events from the queue. When the configuration below is enabled, only trace events are consumed, no trace messages are saved to the database directly. So if you enable this configuration, be sure to also enable the Trace Event Publisher Component, otherwise no trace information is saved anywhere. |
The queue configuration can be configured using a default queue (using blueriq.default.rabbitmq.* in the application.properties). When it is needed, it can be overruled using the configuration below.
Also the trace events exchange has a default, and can be overruled by configuration when needed.
Code Block |
---|
# RabbitMQ configuration blueriq.trace.event.listener.amqp.rabbitmq.host=localhost blueriq.trace.event.listener.amqp.rabbitmq.port=5672 blueriq.trace.event.listener.amqp.rabbitmq.virtualHost=/ blueriq.trace.event.listener.amqp.rabbitmq.username=guest blueriq.trace.event.listener.amqp.rabbitmq.password=guest blueriq.trace.event.listener.amqp.rabbitmq.queueNames=dcmTraceEvents blueriq.trace.event.listener.amqp.concurrency.max-concurrent-consumers=1 blueriq.trace.event.listener.amqp.concurrency.concurrent-consumers=1 # Enable consumer functionality blueriq.trace.event.listener.amqp.enabled=true |
Note |
---|
In certain circumstances it is possible that an error happens while consuming the trace event. Because of the workings of RabbitMQ, this will result in an endless loop where it tries to re-send the trace event until it is correctly consumed. To prevent this, a republish mechanism is added with Blueriq 15.7. This mechanism sends trace events to a dead-letter-queue when an error occurs. This will prevent the creation of the endless loop. For information see Configuring RabbitMQ |
For more information on concurrent consumers see Configuring RabbitMQ.
Enable TLS connection
To enable a secure (TLS) AMQP connection to the queue, set the property "blueriq.trace.event.listener.amqp.rabbitmq.ssl
.enabled
" to "true
".
The default for AQMP port with TLS on RabbitMQ is '5671', it needs to be explicitly enabled though, see https://www.rabbitmq.com/ssl.html for more information.
...