nancymz / bcparis-service

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

bcparis-service

The bcparis-service is standalone restfull service which process messages using others different systems.

Build

Clone iamp-commons

git clone https://github.com/bcgov-c/iamp-commons.git

Install common-metrics

cd common-metrics
mvn install

Install spring-boot-api-service

cd spring-boot-api-service
mvn install

install com.splunk.logging:splunk-library-javalogging v 1.6.2

git clone https://github.com/splunk/splunk-library-javalogging
git checkout tags/1.6.2
cd splunk-library-javalogging
mvn install

clone this repository

git clone https://github.com/bcgov/bcparis-service
cd bcparis-service
mvn install

Contributing

Please read CONTRIBUTING.md for details on our code of conduct, and the process for submitting pull requests to us.

Run locally

Build the application using the Build

Install MySql, bellow is an example for running mysql on docker

docker run --name test-mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=<set_password> -e MYSQL_DATABASE=metastore -d mysql:latest

Create a config folder at the root of the solution

mkdif config

Add a new file logback.xml in the config

cd config
touch logback.xml

add the following content to the file

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true">
    <include resource="org/springframework/boot/logging/logback/defaults.xml"/>
    <springProperty scope="context" name="custom-pattern" source="logging.pattern.custom" />
    <property name="CONSOLE_LOG_PATTERN" value="%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) ${custom-pattern} %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}"/>
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${CONSOLE_LOG_PATTERN}</pattern>
        </encoder>
    </appender>
    <root level="INFO">
        <appender-ref ref="CONSOLE" />
    </root>
    <springProperty scope="context" name="splunk-url" source="splunk.hec.url"/>
    <springProperty scope="context" name="splunk-token" source="splunk.hec.token"/>
    <springProperty scope="context" name="application-name" source="spring.application.name"/>
    <appender name="splunk" class="com.splunk.logging.HttpEventCollectorLogbackAppender">
        <url>${splunk-url}</url>
        <token>${splunk-token}</token>
        <source>${application-name}</source>
        <host>${HOSTNAME}</host>
        <disableCertificateValidation>true</disableCertificateValidation>
        <layout class="ch.qos.logback.classic.PatternLayout">
            <pattern>%msg</pattern>
        </layout>
    </appender>
    <root level="INFO">
        <appender-ref ref="splunk"/>
    </root>
</configuration>

IntelliJ

Install LomBok plugin from marketplace

File > Settings > Pluggins > Search in repositories > LomBok

Restart

Run Mvn install

If you are experiencing error in the code run Files > Invalidate Caches/Restart. also you can do Right click > Maven > Reimport

Set up the environment varialbles

edit the application configuration and

Configure all the environment variables in .env.template file.

use the SOAP UI collection to interact with the service. Set up the project url to http://localhost:8080

Type of processed messages

  • POR - Oracle Protection Order Registry BC41029
  • Driver - ICBC BC41027
  • Vehicle - ICBC BC41028
  • Satellite - Check Performance/Round trip execution time

Message Sample

{
   "Envelope":{
      "Header":{
         "Origin":{
            "QName":"CPIC.MSG.AGENCY.REMOTE",
            "QMgrName":"BMVQ3VIC"
         },
         "CPICVer":"1.4",
         "UDF":"BCPARISTEST",
         "Priority":"1",
         "Routing":{
            "QName":"CPIC.MSG.BMVQ3VIC",
            "QMgrName":"BMVQ3VIC"
         },
         "MsgSrvc":{
            "msgActn":"Receive"
         }
      },
      "Body":{
         "MsgFFmt":"<![CDATA[SN:M00001-0001 MT:MUF MSID:BRKR-190515-20:02:21 FROM:BC41127 TO:BC41027 TEXT:RE: 8372\nHC IC80300\nBC41027 \nBC41028\nSNME:SMITH/G1:JANE/G2:MARY/DOB:19000101/SEX:F\n\n2019051520022120190515200221\n]]>"
      },
      "MQMD":{
         "feedback":"0",
         "replyToQueueManagerName":"CBQ3",
         "messageIdByte":"41 4D 51 20 43 42 51 33 20 20 20 20 20 20 20 20 D9 BF 03 5D 85 20 6E 23",
         "messageType":"8",
         "format":"MQSTR",
         "replyToQueueName":"CPIC.RPT.MSG",
         "correlationIdByte":"41 4D 51 20 42 4D 56 51 33 56 49 43 20 20 20 20 5D 0A D2 81 20 38 61 02"
      }
   }
}

SWAGGER Endpoint

Available on DEV environment. https://bcparis-service-xqb2qz-dev.pathfinder.bcgov/swagger-ui.html

Endpoints

Message Endpoint PUT /api/v1/message Process a message.

Test Endpoints POST /api/v1/message/test/layer7 Send a message to Layer 7.

POST /api/v1/message/test/satellite Send a Satellite Message.

POST /api/v1/message/test/satellite/all Send all the 13 Satellite Messages.

High Level Design and Messages

For more information about the High Level Design and Messages check the confluence page. https://justice.gov.bc.ca/wiki/display/APILM/7.3+High+Level+Design

Versioning

We use SemVer for versioning. For the versions available, see the release on this repository.

Update Version

Run

mvn versions:set -DartifactId=*  -DgroupId=*

Copyright

Copyright 2019 Province of British Columbia

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at 

  http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

About

License:Apache License 2.0


Languages

Language:Java 100.0%