https://github.com/cloud-native-toolkit/inventory-kafka-nodejs
Inventory Service Application using NodeJS to interact with Kafka Event Streams
https://github.com/cloud-native-toolkit/inventory-kafka-nodejs
Last synced: 4 months ago
JSON representation
Inventory Service Application using NodeJS to interact with Kafka Event Streams
- Host: GitHub
- URL: https://github.com/cloud-native-toolkit/inventory-kafka-nodejs
- Owner: cloud-native-toolkit
- Created: 2021-02-03T16:43:04.000Z (over 5 years ago)
- Default Branch: main
- Last Pushed: 2025-05-07T05:10:26.000Z (about 1 year ago)
- Last Synced: 2025-06-22T03:02:56.623Z (12 months ago)
- Language: JavaScript
- Homepage:
- Size: 2.81 MB
- Stars: 0
- Watchers: 5
- Forks: 0
- Open Issues: 74
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
Inventory Service Kafka Producer
This Node.JS Application is part of the Inventory Service for the IBM Cloud Native Toolkit Journey. This application allows users to produce a message to a kafka topic notifying all consumers that an update to an item in inventory has occured.
This application supports the following platforms:
- Confluent
- Local Kafka
- Strimzi
Confluent Setup
Operator Setup
Follow the Instructions at the following link to setup [confluent](https://github.ibm.com/ben-cornwell/confluent-operator/) on OpenShift.
Be sure to record the `global.sasl.plain.username` and `global.sasl.plain.password` from the `values` file in the `confluent-operator` directory for the `Secret Creation` step below.
Once the operator has finished installing, **copy** the `confluentCA.key` and `confluentCA.pem` and move it to a convient location for you to access. Both will be needed for the `Secret Creation` step as well.
Secret Creation
Secrets will be needed in order to connect your Kafka Client to the running instance of Kafka. **Two** secrets will need to be created.
First will be named `confluent-kafka-cert`. Use the following command to create the secret:
```bash
oc create secret tls confluent-kafka-cert --cert='./~PATH TO PEM~/confluentCA.pem' --key='./~PATH TO KEY~/confluentCA.key' -n NAMESPACE
```
*Replace the `PATH TO` with the proper directory path to the file and `NAMESPACE` with the namespace you want it to be deployed.*
The second key to create will be named `kafka-operator-key`. Use the following command to create the secret:
```bash
oc create secret generic kafka-operator-key --from-literal=username=GLOBAL.SASL.PLAIN.USERNAME --from-literal=password=GLOBAL.SASL.PLAIN.PASSWORD -n NAMESPACE
```
*Replace the `GLOBAL.SASL.PLAIN.*` with the value from the previous step and `NAMESPACE` with the namespace you want it to be deployed.*
Client Configuration
First we need to setup the `clusterDev` configuration for the new deployed services.
Open the file `/src/env/clusterDev.js`. **Modify** the following capitalized parameters to match your deployment.
```javascript
kafka: {
TOPIC: 'YOUR TOPIC',
BROKERS: ['kafka.NAMESPACE.svc:9071'],
GROUPID: 'GROUPID',
CLIENTID: 'CLIENTID',
SASLMECH:'plain',
CONNECTIONTIMEOUT: 3000,
AUTHENTICATIONTIMEOUT: 1000,
REAUTHENTICATIONTHRESHOLD: 10000,
RETRIES: 3,
MAXRETRYTIME: 5
}
```
Check out the [documentation](https://kafka.js.org/docs/configuration) for details about the other parameters.
Running the Client
Deploying to Openshift
```bash
oc apply -f openshift/deployment.yaml -n NAMESPACE
```
Once the Deployment is *ready*, Access the swagger page via through the Route that was created. You can find the route through:
```bash
oc get route -n NAMESPACE | grep test-kafka
```
Go to the link that looks like: `test-kafka-NAMESPACE.---.us-east.containers.appdomain.cloud `
Local Kafka Setup
Kafka Setup
Make sure you have an instance of kafka running either locally or remotely.
Following the instruction [here](https://kafka.apache.org/quickstart) for running kafka locally.
Local Client Configuration
First we need to setup the `localDev` configuration for the new deployed services.
Open the file `/src/env/localDev.js`. **Modify** the following capitalized parameters to match your deployment.
```javascript
kafka: {
TOPIC: 'YOUR TOPIC',
BROKERS: ['localhost:9092'],
GROUPID: 'GROUPID',
CLIENTID: 'CLIENTID',
CONNECTIONTIMEOUT: 3000,
AUTHENTICATIONTIMEOUT: 1000,
REAUTHENTICATIONTHRESHOLD: 10000,
RETRIES: 3,
MAXRETRYTIME: 5
}
```
Running the Client
Install the dependencies
```bash
npm install
```
To start the server run:
```bash
npm run dev
```
Access the swagger page via [http:localhost:3000](http://localhost:3000/)
Strimzi Setup
Coming Soon...
Contributors
- Bryan Kribbs (bakribbs@us.ibm.com)