You are viewing the documentation for Blueriq 17. Documentation for other versions is available in our documentation directory.
Datasource tenant configuration
Since CDS 2.1, the customerdata service supports multi-tenant datasources. Enabling multi-tenancy means that calling the API will require sending an additional HTTP header (X-TENANT-ID) with the tenant name. In the configuration of the customerdata service can configure which tenants are allowed to access the API and for each allowed tenant configure a specific datasource. When the customerdata service is not able to retrieve the tenant name or the given tenant name is not allowed to access a HTTP Status 400 (Bad request) is returned and the details are printed in the log.
We only support multi-tenancy where each tenant uses the same database vendor. You are not able to mix, for example, an Oracle tenant with an Microsoft SQL Server tenant.
Since CDS 4.4 the customerdata service supports a multi-tenant event publisher. Enabling multi-tenancy means that properties for publishing aggregate event messages to a queue can be configured for each tenant. To enable the event publisher the entity-event-publisher-amqp profile should be active.Event publisher tenant configuration
Tenant configuration
blueriq:
multi-tenancy:
enabled: true
allowed-tenants: <tenant-name-A>,<tenant-name-B>
customerdata:
datasource:
<datasource-name>:
driver-class-name: <driver>
tenants:
<tenant-name-A>:
url: <url>
username: <username>
password: <password>
<tenant-name-B>:
url: <url>
username: <username>
password: <password>
# publisher
aggregate-event:
channel:
amqp:
rabbitmq:
tenants:
google:
host: <host>
port: <port>
virtualHost: <virtualHost>
username: <username>
password: <password>
ssl:
enabled: <enabled>
exchangeName: <exchangeName>
apple:
host: <host>
port: <port>
virtualHost: <virtualHost>
username: <username>
password: <password>
ssl:
enabled: <enabled>
exchangeName: <exchangeName>
Example setup
Configuration
blueriq:
multi-tenancy:
enabled: true
allowed-tenants: google,apple
customerdata:
datasource:
customer-data-sql-store:
driver-class-name: oracle.jdbc.driver.OracleDriver
tenants:
google:
url: jdbc:oracle:thin:@localhost:1521:orcl
username: google
password: welcome
apple:
url: jdbc:oracle:thin:@localhost:1521:orcl
username: apple
password: welcome
# publisher
aggregate-event:
channel:
amqp:
rabbitmq:
tenants:
google:
host: localhost
port: 5672
virtualHost: Blueriq
username: guest
password: guest
ssl:
enabled: false
exchangeName: customerDataService
apple:
host: localhost
port: 5672
virtualHost: Everest
username: guest
password: guest
ssl:
enabled: false
exchangeName: customerDataService
hibernate:
dialect: org.hibernate.dialect.Oracle12cDialect
hbm2ddl:
auto: validate
id:
new_generator_mappings: true
show_sql: true
use_nationalized_character_data: true
HTTP request
GET http://localhost:8080/api/v1/Aggregates HTTP/1.1
Content-Type: application/json
Authorization: Basic Ymx1ZXJpcTp3ZWxjb21l
X-TENANT-ID: google