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 zephyrservice
Download the ze-rabbitmq-consumer.jar and copy it under
zephyrservice
Create a ze-rabbitmq-consumer config file Named “
zeRabbitMQConsumer.properties
" under folderzephyrservice
vi zeRabbitMQConsumer.properties
Add 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=1
MSSQL
#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=1
Oracle
#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=1
Make sure port 8082 is available.
zeRabbitMQConsumer
should be able to connect with RabbitMQ.zeRabbitMQConsumer
should 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 zephyrservice
Download 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: true
Create a ze-rabbitmq-consumer config file Named “
zeRabbitMQConsumer.properties
" under folderzephyrservice
vi zeRabbitMQConsumer.properties
Add 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=1
MSSQL
#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=1
Oracle
#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=1
Make sure port 8082 is available.
zeRabbitMQConsumer
should be able to connect with RabbitMQ.zeRabbitMQConsumer
should 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 -d
Verification 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.