ZE-Consumer Deployment
Starting October 11, 2024 (Zephyr Enterprise 8.2), the Zephyr Enterprise documentation moved from its current location on Atlassian to a dedicated, standalone Zephyr Enterprise documentation page. Please see: https://support.smartbear.com/zephyr-enterprise/docs/en/zephyr-enterprise/zephyr-installation-and-upgrade-guides/zephyr-on-premise-production-installation/zephyr-enterprise-services/ze-consumer-deployment.html
Prerequisite
Install Oracle Java 17.0.10.
Ensure your Zephyr RabbitMQ and ze-jira-webhook. application is set up and running, For RabbitMQ Setup follow the instructions on the following page: https://smartbear.atlassian.net/wiki/spaces/PD/pages/3852992664
From the application browser, do the following:Launch Zephyr with your respective host/domain. Ex: https://test.yourzephyr.com
Launch RabbitMQ with the host and configured port. Ex: http://localhost:15672]
Launch RabbitMQ Management in the browser with the host and port (Ex: http://localhost:15672).
Consumer Service Deployment (Jar)
Create a directory under folder opt “zephyrservice”
mkdir zephyrserviceDownload the ze-rabbitmq-consumer.jar and copy it under
zephyrserviceCreate a ze-rabbitmq-consumer config file Named “
zeRabbitMQConsumer.properties" under folderzephyrservice
vi zeRabbitMQConsumer.propertiesAdd the below line to the file:
#Consumer Service port
server.port=8082
# Rabbitmq config
zephyr.queue.name=ze_queue
zephyr.queue.exchange=ze_exchange
zephyr.queue.routing.key=ze_routing_key
spring.rabbitmq.listener.simple.prefetch=1
spring.rabbitmq.host=<rabbitmq_hostname>
spring.rabbitmq.port=<rabbitmq_port>
spring.rabbitmq.username=<rabbitmq_username>
spring.rabbitmq.password=<rabbitmq_password>
# Audit service configurations
audit.service.baseUrl=http://localhost:8083
# Zephyr service configurations
zephyr.service.baseUrl=http://localhost:8080
# webhook service url
zephyr.rabbitmq.webhook.baseUrl=http://localhost:8081/webhook
# Jira retry callback configurations
# BackOffDelay allows dynamic calculation of the delay between retry attempts
zephyr.jiracall.retry.backOffDelay=500
# multiplier allows dynamic calculation of the multiplier factor for exponential backoff
zephyr.jiracall.retry.multiplier=2
# maxAttempts specifies the maximum number of retry attempts for the jira call.
zephyr.jiracall.retry.maxAttempts=1
Append the below database-specific properties based on the Zephyr database you are using.
MsSQL:
# Data source configurations applied for mssql
---
spring.config.activate.on-profile=mssql
spring.datasource.url=jdbc:sqlserver://<database_ipaddress>:<database_port>;database=itcc;encrypt=true;trustServerCertificate=true
spring.datasource.username=<datbase_username>
spring.datasource.password=<database_password>
spring.datasource.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.jpa.hibernate.ddl-auto=none
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.SQLServer2012Dialect
---
spring.profiles.active=mssql
MySQL:
# Data source configurations applied for mysql
---
spring.config.activate.on-profile=mysql
spring.datasource.url=jdbc:mysql://<database_ipaddress>:<database_port>/itcc?useUnicode=true&characterEncoding=utf-8&useSSL=false
spring.datasource.username=<datbase_username>
spring.datasource.password=<database_password>
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.jpa.hibernate.ddl-auto=none
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQLDialect
---
spring.profiles.active=mysql
Oracle:
# Data source configurations applied for oracle
---
spring.config.activate.on-profile=oracle
spring.datasource.url=jdbc:oracle:thin:@<hostname>:<port>:orcl
spring.datasource.username=<datbase_username>
spring.datasource.password=<database_password>
spring.datasource.driver-class-name=oracle.jdbc.OracleDriver
spring.jpa.properties.hibernate.default_schema=itcc
spring.jpa.hibernate.ddl-auto=none
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.Oracle12cDialect
---
spring.profiles.active=oracle
Your sample zeRabbitMQConsumer.properties should look like Below:
MySQL
#Consumer Service port
server.port=8082
spring.rabbitmq.host=localhost
spring.rabbitmq.port=5672
spring.rabbitmq.username=test
spring.rabbitmq.password=test
# Data source configurations applied for mysql
---
spring.config.activate.on-profile=mysql
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.url=jdbc:mysql://localhost:3306/itcc?useUnicode=true&characterEncoding=utf-8&useSSL=false
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.jpa.hibernate.ddl-auto=none
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQLDialect
---
spring.profiles.active=mysql
#Queue
zephyr.queue.name=ze_queue
zephyr.queue.exchange=ze_exchange
zephyr.queue.routing.key=ze_routing_key
spring.rabbitmq.listener.simple.prefetch=1
# Audit service configurations
audit.service.baseUrl=http://localhost:8083
# Zephyr service configurations
zephyr.service.baseUrl=http://localhost:8080
# webhook service url --> must needs to pass as vm argument
zephyr.rabbitmq.webhook.baseUrl=http://localhost:8081/webhook
# Jira retry callback configurations
# BackOffDelay allows dynamic calculation of the delay between retry attempts in millisecond
zephyr.jiracall.retry.backOffDelay=500
# multiplier allows dynamic calculation of the multiplier factor for exponential backoff
zephyr.jiracall.retry.multiplier=2
# maxAttempts specifies the maximum number of retry attempts for the jira call.
zephyr.jiracall.retry.maxAttempts=1MSSQL
#Consumer Service port
server.port=8082
spring.rabbitmq.host=localhost
spring.rabbitmq.username=test
spring.rabbitmq.password=test
# Data source configurations applied for mssql
---
spring.config.activate.on-profile=mssql
spring.datasource.username=sa
spring.datasource.password=root
spring.datasource.url=jdbc:sqlserver://localhost:1433;database=itcc;encrypt=true;trustServerCertificate=true
spring.datasource.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.jpa.hibernate.ddl-auto=none
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.SQLServer2012Dialect
---
spring.profiles.active=mssql
#Queue
zephyr.queue.name=ze_queue
zephyr.queue.exchange=ze_exchange
zephyr.queue.routing.key=ze_routing_key
spring.rabbitmq.listener.simple.prefetch=1
# Audit service configurations
audit.service.baseUrl=http://localhost:8083
# Zephyr service configurations
zephyr.service.baseUrl=http://localhost:8080
# webhook service url --> must needs to pass as vm argument
zephyr.rabbitmq.webhook.baseUrl=http://localhost:8081/webhook
# Jira retry callback configurations
# BackOffDelay allows dynamic calculation of the delay between retry attempts in millisecond
zephyr.jiracall.retry.backOffDelay=500
# multiplier allows dynamic calculation of the multiplier factor for exponential backoff
zephyr.jiracall.retry.multiplier=2
# maxAttempts specifies the maximum number of retry attempts for the jira call.
zephyr.jiracall.retry.maxAttempts=1Oracle
#Consumer Service port
server.port=8082
spring.rabbitmq.host=localhost
spring.rabbitmq.username=test
spring.rabbitmq.password=test
# Data source configurations applied for oracle
---
spring.config.activate.on-profile=oracle
spring.datasource.username=admin
spring.datasource.password=password
spring.datasource.url=jdbc:oracle:thin:@//localhost:1521/orcl
spring.datasource.driver-class-name=oracle.jdbc.OracleDriver
spring.jpa.properties.hibernate.default_schema=itcc
spring.jpa.hibernate.ddl-auto=none
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.Oracle12cDialect
---
spring.profiles.active=oracle
#Queue
zephyr.queue.name=ze_queue
zephyr.queue.exchange=ze_exchange
zephyr.queue.routing.key=ze_routing_key
spring.rabbitmq.listener.simple.prefetch=1
# Audit service configurations
audit.service.baseUrl=http://localhost:8083
# Zephyr service configurations
zephyr.service.baseUrl=http://localhost:8080
# webhook service url --> must needs to pass as vm argument
zephyr.rabbitmq.webhook.baseUrl=http://localhost:8081/webhook
# Jira retry callback configurations
# BackOffDelay allows dynamic calculation of the delay between retry attempts in millisecond
zephyr.jiracall.retry.backOffDelay=500
# multiplier allows dynamic calculation of the multiplier factor for exponential backoff
zephyr.jiracall.retry.multiplier=2
# maxAttempts specifies the maximum number of retry attempts for the jira call.
zephyr.jiracall.retry.maxAttempts=1Make sure port 8082 is available.
zeRabbitMQConsumershould be able to connect with RabbitMQ.zeRabbitMQConsumershould be able to connect to the Database of Zephyr.
Run the following command to start the ze-rabbitmq-consumer:
sudo nohup java -jar -Dspring.profiles.active=<db> -DzeConsumerConfigPath="<config file path till root folder>" ze-rabbitmq-consumer.jar &Example command for mysql:
sudo nohup java -jar -Dspring.profiles.active=mysql -DzeConsumerConfigPath="/opt/zephyrservice" ze-rabbitmq-consumer.jar &Consumer started snapshot for reference: -
Verification in the browser:
Verify webhook application status by using http://<hostname>:8082/actuator/health.
Note: -
The Logs folder will be created where your jars are deployed. Separate log files will be created for each jar.
---at the start and end of the DB configuration is necessary. Follow the same mentioned.
Consumer Service Deployment (Docker): -
Install Docker in the System
Create a directory under folder opt “zephyrservice”
mkdir zephyrserviceDownload the Docker compose and copy it under
zephyrservice
#dockercompose
version: '3.5'
services:
#consumerservice
ze-rabbitmq-consumer:
image: smartbear/zerabbitmqconsumer:ze-rabbitmq-consumer
container_name: ze-rabbitmq-consumer
ports:
- "8082:8082"
environment:
- server_port=8082
volumes:
- ./zeRabbitMQConsumer.properties:/usr/src/app/zeRabbitMQConsumer.properties
networks:
- consumer_service
networks:
consumer_service:
name: zephyr
external: trueCreate a ze-rabbitmq-consumer config file Named “
zeRabbitMQConsumer.properties" under folderzephyrservice
vi zeRabbitMQConsumer.propertiesAdd the below line to the file:
#Consumer Service port
server.port=8082
# Rabbitmq config
zephyr.queue.name=ze_queue
zephyr.queue.exchange=ze_exchange
zephyr.queue.routing.key=ze_routing_key
spring.rabbitmq.listener.simple.prefetch=1
spring.rabbitmq.host=<rabbitmq_hostname>
spring.rabbitmq.port=<rabbitmq_port>
spring.rabbitmq.username=<rabbitmq_username>
spring.rabbitmq.password=<rabbitmq_password>
# Audit service configurations
audit.service.baseUrl=http://localhost:8083
# Zephyr service configurations
zephyr.service.baseUrl=http://localhost:8080
# webhook service url
zephyr.rabbitmq.webhook.baseUrl=http://localhost:8081/webhook
# Jira retry callback configurations
# BackOffDelay allows dynamic calculation of the delay between retry attempts
zephyr.jiracall.retry.backOffDelay=500
# multiplier allows dynamic calculation of the multiplier factor for exponential backoff
zephyr.jiracall.retry.multiplier=2
# maxAttempts specifies the maximum number of retry attempts for the jira call.
zephyr.jiracall.retry.maxAttempts=1Append the below database-specific properties based on the Zephyr database you are using.
MsSQL:
# Data source configurations applied for mssql
---
spring.config.activate.on-profile=mssql
spring.datasource.url=jdbc:sqlserver://<database_ipaddress>:<database_port>;database=itcc;encrypt=true;trustServerCertificate=true
spring.datasource.username=<datbase_username>
spring.datasource.password=<database_password>
spring.datasource.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.jpa.hibernate.ddl-auto=none
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.SQLServer2012Dialect
---
spring.profiles.active=mssqlMySQL:
# Data source configurations applied for mysql
---
spring.config.activate.on-profile=mysql
spring.datasource.url=jdbc:mysql://<database_ipaddress>:<database_port>/itcc?useUnicode=true&characterEncoding=utf-8&useSSL=false
spring.datasource.username=<datbase_username>
spring.datasource.password=<database_password>
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.jpa.hibernate.ddl-auto=none
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQLDialect
---
spring.profiles.active=mysqlOracle:
# Data source configurations applied for oracle
---
spring.config.activate.on-profile=oracle
spring.datasource.url=jdbc:oracle:thin:@<hostname>:<port>:orcl
spring.datasource.username=<datbase_username>
spring.datasource.password=<database_password>
spring.datasource.driver-class-name=oracle.jdbc.OracleDriver
spring.jpa.properties.hibernate.default_schema=itcc
spring.jpa.hibernate.ddl-auto=none
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.Oracle12cDialect
---
spring.profiles.active=oracleYour sample zeRabbitMQConsumer.properties should look like Below:
MySQL
#Consumer Service port
server.port=8082
spring.rabbitmq.host=localhost
spring.rabbitmq.port=5672
spring.rabbitmq.username=test
spring.rabbitmq.password=test
# Data source configurations applied for mysql
---
spring.config.activate.on-profile=mysql
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.url=jdbc:mysql://localhost:3306/itcc?useUnicode=true&characterEncoding=utf-8&useSSL=false
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.jpa.hibernate.ddl-auto=none
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQLDialect
---
spring.profiles.active=mysql
#Queue
zephyr.queue.name=ze_queue
zephyr.queue.exchange=ze_exchange
zephyr.queue.routing.key=ze_routing_key
spring.rabbitmq.listener.simple.prefetch=1
# Audit service configurations
audit.service.baseUrl=http://localhost:8083
# Zephyr service configurations
zephyr.service.baseUrl=http://localhost:8080
# webhook service url --> must needs to pass as vm argument
zephyr.rabbitmq.webhook.baseUrl=http://localhost:8081/webhook
# Jira retry callback configurations
# BackOffDelay allows dynamic calculation of the delay between retry attempts in millisecond
zephyr.jiracall.retry.backOffDelay=500
# multiplier allows dynamic calculation of the multiplier factor for exponential backoff
zephyr.jiracall.retry.multiplier=2
# maxAttempts specifies the maximum number of retry attempts for the jira call.
zephyr.jiracall.retry.maxAttempts=1MSSQL
#Consumer Service port
server.port=8082
spring.rabbitmq.host=localhost
spring.rabbitmq.username=test
spring.rabbitmq.password=test
# Data source configurations applied for mssql
---
spring.config.activate.on-profile=mssql
spring.datasource.username=sa
spring.datasource.password=root
spring.datasource.url=jdbc:sqlserver://localhost:1433;database=itcc;encrypt=true;trustServerCertificate=true
spring.datasource.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.jpa.hibernate.ddl-auto=none
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.SQLServer2012Dialect
---
spring.profiles.active=mssql
#Queue
zephyr.queue.name=ze_queue
zephyr.queue.exchange=ze_exchange
zephyr.queue.routing.key=ze_routing_key
spring.rabbitmq.listener.simple.prefetch=1
# Audit service configurations
audit.service.baseUrl=http://localhost:8083
# Zephyr service configurations
zephyr.service.baseUrl=http://localhost:8080
# webhook service url --> must needs to pass as vm argument
zephyr.rabbitmq.webhook.baseUrl=http://localhost:8081/webhook
# Jira retry callback configurations
# BackOffDelay allows dynamic calculation of the delay between retry attempts in millisecond
zephyr.jiracall.retry.backOffDelay=500
# multiplier allows dynamic calculation of the multiplier factor for exponential backoff
zephyr.jiracall.retry.multiplier=2
# maxAttempts specifies the maximum number of retry attempts for the jira call.
zephyr.jiracall.retry.maxAttempts=1Oracle
#Consumer Service port
server.port=8082
spring.rabbitmq.host=localhost
spring.rabbitmq.username=test
spring.rabbitmq.password=test
# Data source configurations applied for oracle
---
spring.config.activate.on-profile=oracle
spring.datasource.username=admin
spring.datasource.password=password
spring.datasource.url=jdbc:oracle:thin:@//localhost:1521/orcl
spring.datasource.driver-class-name=oracle.jdbc.OracleDriver
spring.jpa.properties.hibernate.default_schema=itcc
spring.jpa.hibernate.ddl-auto=none
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.Oracle12cDialect
---
spring.profiles.active=oracle
#Queue
zephyr.queue.name=ze_queue
zephyr.queue.exchange=ze_exchange
zephyr.queue.routing.key=ze_routing_key
spring.rabbitmq.listener.simple.prefetch=1
# Audit service configurations
audit.service.baseUrl=http://localhost:8083
# Zephyr service configurations
zephyr.service.baseUrl=http://localhost:8080
# webhook service url --> must needs to pass as vm argument
zephyr.rabbitmq.webhook.baseUrl=http://localhost:8081/webhook
# Jira retry callback configurations
# BackOffDelay allows dynamic calculation of the delay between retry attempts in millisecond
zephyr.jiracall.retry.backOffDelay=500
# multiplier allows dynamic calculation of the multiplier factor for exponential backoff
zephyr.jiracall.retry.multiplier=2
# maxAttempts specifies the maximum number of retry attempts for the jira call.
zephyr.jiracall.retry.maxAttempts=1Make sure port 8082 is available.
zeRabbitMQConsumershould be able to connect with RabbitMQ.zeRabbitMQConsumershould be able to connect to the Database of Zephyr.
Start the ze-jira-webhook with docker with the following command.
Navigate to zephyrservice and run the below command:
docker-compose up -dVerification in the browser:
Verify webhook application status by using http://<hostname>:8082/actuator/health
Post Deployment verification on RabbitMq
Once your webhook and consumer jar are up ze_queue,ze_exchange, and ze_routing_key will be created as mentioned in the properties file.
In the Management UI, you can verify.
→ "ze_queue" with type as "quorum" will be created in the Queues and Streams tab→ "ze_exchange" with type as "topic" will be created in the Exchanges tab
→ Click on the "ze_exchange” → queue name as “ze_queue“ and Routing key as “ze_routing_key“ will be created in Bindings.