Getting Started

Configuration and Runtime

The SEPA CT STEP2 CSM is essentially a stand alone application which can be run as a service much like any other IPF application deployment. So however you decide to run your IPF applications you can do the same thing for this CSM.

Configuration

Below you can see the bare minimum configuration required to get the service stood up and running. Note the key aspects around providing the MongoDB URL, the default Akka configuration and your Kafka URL.

akka {
  cluster.seed-nodes = ["akka://"${actor-system-name}"@0.0.0.0:"${akka.remote.artery.canonical.port}]
  remote.artery {
    canonical.port = 55001
    canonical.hostname = 0.0.0.0
    bind.hostname = 0.0.0.0
    bind.port = 55001
  }
}
ipf.mongodb.url = "mongodb://ipf-mongo:27017/sepact"

ipf.csm.sepa-ct {
  processing-entity {
    valid-agent-bics = [
      {
        direct-participant-bic = "<BICFI>"
        indirect-participant-bics = [
          "<BICFI>"
        ]
      }
    ]
  }
}

common-kafka-client-settings {
  bootstrap.servers = "kafka:9092"
}

akka.kafka {
  producer {
    kafka-clients = ${common-kafka-client-settings}
  }
  consumer {
    kafka-clients = ${common-kafka-client-settings}
  }
}

Client Specific Configuration

You can of course provide client specific configuration for certain things within the service.

A common thing you might consider making specific are the Kafka topic names (for example Debulker Kafka Configuration).

Other configurations are available and described in the relevant feature doc section (Features).

Running

The following yml is an example for you to be able to stand up the service locally and contains configuration for dependent containers (Kafka, Zookeeper and MongoDB). You would need to select the appropriate section to "step2csm" to take as a start point for your deployment environment.

version: "2.1"

services:

  ipf-mongo:
    image: mongo:4.4.15
    container_name: ipf-mongo
    ports:
      - "27018:27017"
    healthcheck:
      test: echo 'db.runCommand("ping").ok' | mongo localhost:27017/test --quiet

  step2csm:
    image: releases-registry.ipfdev.co.uk/sepact-csm-application-kafka:0.1.0
    container_name: sepact-csm-application
    ports:
      - "8083:8080"
      - "8561:8558"
      - "5009:5005"
      - "55003:55001"
      - "9003:9001"
      - "8087:8084"
    volumes:
      - /tmp/logs:/ipf/logs
      - ./config/step2csm:/sepact-csm-application-kafka/conf
    environment:
      - IPF_JAVA_ARGS=-Dma.glasnost.orika.writeClassFiles=false -Dma.glasnost.orika.writeSourceFiles=false -Dconfig.override_with_env_vars=true
    depends_on:
      - ipf-mongo
    healthcheck:
      test: [ "CMD", "curl", "http://localhost:8080/actuator/health" ]


  zookeeper:
    image: zookeeper:latest
    container_name: zookeeper
    ports:
      - "2181:2181"

  kafka:
    image: wurstmeister/kafka:2.13-2.7.1
    container_name: kafka
    depends_on:
      - zookeeper
    ports:
      - "9092:9092"
      - "9099:9099"
    environment:
      - KAFKA_BROKER_ID=0
      - KAFKA_AUTO_CREATE_TOPICS_ENABLE=false
      - KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181
      - KAFKA_LOG_RETENTION_MINUTES=10
      - KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=1
      - KAFKA_OFFSETS_TOPIC_NUM_PARTITIONS=1
      - KAFKA_LISTENER_SECURITY_PROTOCOL_MAP=TEST:PLAINTEXT,PLAINTEXT:PLAINTEXT
      - KAFKA_LISTENERS=PLAINTEXT://:9092,TEST://:9099
      - KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://kafka:9092,TEST://localhost:9099
      - KAFKA_CREATE_TOPICS=IPF_PROCESSING_DATA:1:1,PMS_TO_PIS:1:1,PIS_TO_PMS:1:1,PIS_TO_PES:1:1,PRS_TO_IPF:1:1

  kafdrop:
    image: obsidiandynamics/kafdrop:latest
    container_name: kafdrop
    ports:
      - "9000:9000"
    environment:
      - KAFKA_BROKERCONNECT=kafka:9092
    depends_on:
      - kafka