Commit 7cf48a6e authored by Ramakanth Dhane's avatar Ramakanth Dhane

Merge branch 'omd-notification-feature-branch' into 'master'

OMD notification feature branch

See merge request !8
parents c9f374b7 dd823838
...@@ -28,6 +28,16 @@ ...@@ -28,6 +28,16 @@
<groupId>com.fasterxml.jackson.core</groupId> <groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId> <artifactId>jackson-databind</artifactId>
</dependency> </dependency>
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.7.30</version>
<scope>test</scope>
</dependency>
<dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId> <artifactId>spring-boot-devtools</artifactId>
...@@ -43,7 +53,7 @@ ...@@ -43,7 +53,7 @@
<groupId>com.github.javafaker</groupId> <groupId>com.github.javafaker</groupId>
<artifactId>javafaker</artifactId> <artifactId>javafaker</artifactId>
<version>1.0.2</version> <version>1.0.2</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId> <artifactId>spring-boot-starter-test</artifactId>
......
...@@ -2,6 +2,7 @@ package com.nisum.omd; ...@@ -2,6 +2,7 @@ package com.nisum.omd;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import com.nisum.omd.service.OmdProducerService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner; import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
...@@ -19,6 +20,10 @@ public class OrderGenerator implements CommandLineRunner{ ...@@ -19,6 +20,10 @@ public class OrderGenerator implements CommandLineRunner{
RandomDataGeneratorImpl rdg; RandomDataGeneratorImpl rdg;
@Autowired @Autowired
Order order; Order order;
@Autowired
OmdProducerService omdProducerService;
Boolean orderGenerateFlag = true; Boolean orderGenerateFlag = true;
public Boolean getOrderGenerateFlag() { public Boolean getOrderGenerateFlag() {
...@@ -33,6 +38,7 @@ public class OrderGenerator implements CommandLineRunner{ ...@@ -33,6 +38,7 @@ public class OrderGenerator implements CommandLineRunner{
while(orderGenerateFlag){ while(orderGenerateFlag){
order=getObjectData(order); order=getObjectData(order);
omdProducerService.sendMessage(order);
ObjectMapper objectMapper = new ObjectMapper(); ObjectMapper objectMapper = new ObjectMapper();
objectMapper.registerModule(new JavaTimeModule()); objectMapper.registerModule(new JavaTimeModule());
objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
......
package com.nisum.omd.config;
import com.nisum.omd.domain.Order;
import org.apache.kafka.clients.producer.ProducerConfig;
import org.apache.kafka.common.serialization.StringSerializer;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.kafka.core.DefaultKafkaProducerFactory;
import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.kafka.core.ProducerFactory;
import org.springframework.kafka.support.serializer.JsonSerializer;
import java.util.HashMap;
import java.util.Map;
@Configuration
public class OmdProducerConfig {
@Value("${bootstrap-server}")
private String bootstrapServer;
@Bean
public ProducerFactory<String, Order> producerFactory(){
Map<String,Object> config = new HashMap<>();
config.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServer);
config.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
config.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, JsonSerializer.class);
return new DefaultKafkaProducerFactory<>(config);
}
@Bean
public KafkaTemplate<String, Order> kafkaTemplate(){
return new KafkaTemplate<>(producerFactory());
}
}
package com.nisum.omd.service;
import com.nisum.omd.domain.Order;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.kafka.support.SendResult;
import org.springframework.stereotype.Service;
import org.springframework.util.concurrent.ListenableFuture;
import org.springframework.util.concurrent.ListenableFutureCallback;
@Service
public class OmdProducerService {
@Autowired
private KafkaTemplate<String, Order> kafkaTemplate;
@Value("${topic-name}")
private String topic;
Logger logger = LoggerFactory.getLogger(OmdProducerService.class);
public void sendMessage(Order order) {
ListenableFuture<SendResult<String, Order>> future =
kafkaTemplate.send(topic, order);
future.addCallback(new ListenableFutureCallback<SendResult<String, Order>>() {
@Override
public void onSuccess(SendResult<String, Order> result) {
logger.info(" Published Order Data with Order Number :"
+ order.getOrderNum() + " In Topic :"+ result.getRecordMetadata().topic());
}
@Override
public void onFailure(Throwable ex) {
logger.error("Unable to Publish the Order Data, Due to: ",ex.getMessage());
}
});
}
}
...@@ -67,3 +67,8 @@ app.paymentMethod.paymentStatus=AUTH ...@@ -67,3 +67,8 @@ app.paymentMethod.paymentStatus=AUTH
app.paymentMethod.paymentDetail.TransactionId=021361475199 app.paymentMethod.paymentDetail.TransactionId=021361475199
app.paymentMethod.paymentDetail.ProcessedAmount=1000.00 app.paymentMethod.paymentDetail.ProcessedAmount=1000.00
app.paymentMethod.paymentDetail.RequestAmount=1000.00 app.paymentMethod.paymentDetail.RequestAmount=1000.00
#Kafka Properties
bootstrap-server = localhost:9092
topic-name = TOPIC_OMD_ORDER_DATA
\ No newline at end of file
...@@ -23,7 +23,27 @@ ...@@ -23,7 +23,27 @@
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId> <artifactId>spring-boot-starter-web</artifactId>
</dependency> </dependency>
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.10.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-simple -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.7.30</version>
<scope>test</scope>
</dependency>
<dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId> <artifactId>spring-boot-starter-test</artifactId>
......
package com.nisum.omd.config;
import com.nisum.omd.domain.Order;
import org.apache.kafka.clients.consumer.ConsumerConfig;
import org.apache.kafka.common.serialization.StringDeserializer;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.kafka.annotation.EnableKafka;
import org.springframework.kafka.config.ConcurrentKafkaListenerContainerFactory;
import org.springframework.kafka.core.ConsumerFactory;
import org.springframework.kafka.core.DefaultKafkaConsumerFactory;
import org.springframework.kafka.support.serializer.JsonDeserializer;
import java.util.HashMap;
import java.util.Map;
@EnableKafka
@Configuration
public class OmdConsumerConfig {
@Value("${bootstrap-server}")
private String bootstrapserver;
@Value("${group-id}")
private String groupId;
@Value("${auto-offset-reset-config}")
private String offset;
@Bean
public ConsumerFactory<String, Order> orderConsumerFactory(){
Map<String, Object> config = new HashMap<>();
config.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapserver);
config.put(ConsumerConfig.GROUP_ID_CONFIG, groupId);
config.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
config.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, JsonDeserializer.class);
config.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, offset);
final JsonDeserializer<Order> jsonDeserializer = new JsonDeserializer<>();
jsonDeserializer.addTrustedPackages("*");
return new DefaultKafkaConsumerFactory<>(config, new StringDeserializer(), jsonDeserializer);
}
@Bean
public ConcurrentKafkaListenerContainerFactory<String, Order> orderKafkaListenerContainerFactory(){
ConcurrentKafkaListenerContainerFactory<String, Order> factory =
new ConcurrentKafkaListenerContainerFactory<>();
factory.setConsumerFactory(orderConsumerFactory());
return factory;
}
}
package com.nisum.omd.domain;
public class BillingTo {
private String firstName;
private String lastName;
private String addressLine1;
private String city;
private String state;
private String zipCode;
private String country;
private int mobileNum;
private String eMailID;
private boolean residentialAddr;
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getAddressLine1() {
return addressLine1;
}
public void setAddressLine1(String addressLine1) {
this.addressLine1 = addressLine1;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
public String getZipCode() {
return zipCode;
}
public void setZipCode(String zipCode) {
this.zipCode = zipCode;
}
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
public int getMobileNum() {
return mobileNum;
}
public void setMobileNum(int mobileNum) {
this.mobileNum = mobileNum;
}
public String geteMailID() {
return eMailID;
}
public void seteMailID(String eMailID) {
this.eMailID = eMailID;
}
public boolean isResidentialAddr() {
return residentialAddr;
}
public void setResidentialAddr(boolean residentialAddr) {
this.residentialAddr = residentialAddr;
}
}
package com.nisum.omd.domain;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
import java.util.Map;
@Component
public class LineItem {
private String lineItemNumber;
private String skuNumber;
private String itemColorDesc;
private String size;
private String orderedQty;
private String productName;
private String itemType;
private boolean shipChrgApplInd;
private LocalDateTime estimatedShipDate;
private Map<String,Object> linePriceInfo;
private Map<String,Object> lineTax;
public String getLineItemNumber() {
return lineItemNumber;
}
public void setLineItemNumber(String lineItemNumber) {
this.lineItemNumber = lineItemNumber;
}
public String getSkuNumber() {
return skuNumber;
}
public void setSkuNumber(String skuNumber) {
this.skuNumber = skuNumber;
}
public String getItemColorDesc() {
return itemColorDesc;
}
public void setItemColorDesc(String itemColorDesc) {
this.itemColorDesc = itemColorDesc;
}
public String getSize() {
return size;
}
public void setSize(String size) {
this.size = size;
}
public String getOrderedQty() {
return orderedQty;
}
public void setOrderedQty(String orderedQty) {
this.orderedQty = orderedQty;
}
public String getProductName() {
return productName;
}
public void setProductName(String productName) {
this.productName = productName;
}
public String getItemType() {
return itemType;
}
public void setItemType(String itemType) {
this.itemType = itemType;
}
public boolean isShipChrgApplInd() {
return shipChrgApplInd;
}
public void setShipChrgApplInd(boolean shipChrgApplInd) {
this.shipChrgApplInd = shipChrgApplInd;
}
public LocalDateTime getEstimatedShipDate() {
return estimatedShipDate;
}
public void setEstimatedShipDate(LocalDateTime estimatedShipDate) {
this.estimatedShipDate = estimatedShipDate;
}
public Map<String, Object> getLinePriceInfo() {
return linePriceInfo;
}
public void setLinePriceInfo(Map<String, Object> linePriceInfo) {
this.linePriceInfo = linePriceInfo;
}
public Map<String, Object> getLineTax() {
return lineTax;
}
public void setLineTax(Map<String, Object> lineTax) {
this.lineTax = lineTax;
}
}
package com.nisum.omd.domain;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
@Component
@ConfigurationProperties("app")
public class Order {
private String orderNum;
private LocalDateTime orderDate;
private String currency;
private String shipMethod;
private String customerId;
private String customerType;
private String gift;
private Promotions promotions;
private LineItem lineItem;
private BillingTo billingTo;
private OrderCharges orderCharges;
private OrderTaxes orderTaxes;
private ShippingInfo shippingInfo;
private ShipTo shipTo;
private PaymentMethod paymentMethod;
public String getCustomerId() {
return customerId;
}
public void setCustomerId(String customerId) {
this.customerId = customerId;
}
public String getOrderNum() {
return orderNum;
}
public void setOrderNum(String orderNum) {
this.orderNum = orderNum;
}
public LocalDateTime getOrderDate() {
return orderDate;
}
public void setOrderDate(LocalDateTime orderDate) {
this.orderDate = orderDate;
}
public String getCurrency() {
return currency;
}
public void setCurrency(String currency) {
this.currency = currency;
}
public String getShipMethod() {
return shipMethod;
}
public void setShipMethod(String shipMethod) {
this.shipMethod = shipMethod;
}
public String getCustomerType() {
return customerType;
}
public void setCustomerType(String customerType) {
this.customerType = customerType;
}
public String getGift() {
return gift;
}
public void setGift(String gift) {
this.gift = gift;
}
public Promotions getPromotions() {
return promotions;
}
public void setPromotions(Promotions promotions) {
this.promotions = promotions;
}
public LineItem getLineItem() {
return lineItem;
}
public void setLineItem(LineItem lineItem) {
this.lineItem = lineItem;
}
public BillingTo getBillingTo() {
return billingTo;
}
public void setBillingTo(BillingTo billingTo) {
this.billingTo = billingTo;
}
public OrderCharges getOrderCharges() {
return orderCharges;
}
public void setOrderCharges(OrderCharges orderCharges) {
this.orderCharges = orderCharges;
}
public OrderTaxes getOrderTaxes() {
return orderTaxes;
}
public void setOrderTaxes(OrderTaxes orderTaxes) {
this.orderTaxes = orderTaxes;
}
public ShippingInfo getShippingInfo() {
return shippingInfo;
}
public void setShippingInfo(ShippingInfo shippingInfo) {
this.shippingInfo = shippingInfo;
}
public ShipTo getShipTo() {
return shipTo;
}
public void setShipTo(ShipTo shipTo) {
this.shipTo = shipTo;
}
public PaymentMethod getPaymentMethod() {
return paymentMethod;
}
public void setPaymentMethod(PaymentMethod paymentMethod) {
this.paymentMethod = paymentMethod;
}
}
package com.nisum.omd.domain;
public class OrderCharges {
private float chargeAmount;
private String chargeCategory;
private String chargeName;
public float getChargeAmount() {
return chargeAmount;
}
public void setChargeAmount(float chargeAmount) {
this.chargeAmount = chargeAmount;
}
public String getChargeCategory() {
return chargeCategory;
}
public void setChargeCategory(String chargeCategory) {
this.chargeCategory = chargeCategory;
}
public String getChargeName() {
return chargeName;
}
public void setChargeName(String chargeName) {
this.chargeName = chargeName;
}
}
package com.nisum.omd.domain;
public class OrderTaxes {
private String chargeCategory;
private String taxName;
private float tax;
private String taxCode;
private int taxPercentage;
public String getChargeCategory() {
return chargeCategory;
}
public void setChargeCategory(String chargeCategory) {
this.chargeCategory = chargeCategory;
}
public String getTaxName() {
return taxName;
}
public void setTaxName(String taxName) {
this.taxName = taxName;
}
public float getTax() {
return tax;
}
public void setTax(float tax) {
this.tax = tax;
}
public String getTaxCode() {
return taxCode;
}
public void setTaxCode(String taxCode) {
this.taxCode = taxCode;
}
public int getTaxPercentage() {
return taxPercentage;
}
public void setTaxPercentage(int taxPercentage) {
this.taxPercentage = taxPercentage;
}
}
package com.nisum.omd.domain;
import java.util.Map;
public class PaymentMethod {
private String paymentMethod;
private String creditCardNo;
private String creditCardType;
private String displayCreditCardNo;
private String paymentStatus;
private Map<String,Object> paymentDetail;
public String getPaymentMethod() {
return paymentMethod;
}
public void setPaymentMethod(String paymentMethod) {
this.paymentMethod = paymentMethod;
}
public String getCreditCardNo() {
return creditCardNo;
}
public void setCreditCardNo(String creditCardNo) {
this.creditCardNo = creditCardNo;
}
public String getCreditCardType() {
return creditCardType;
}
public void setCreditCardType(String creditCardType) {
this.creditCardType = creditCardType;
}
public String getDisplayCreditCardNo() {
return displayCreditCardNo;
}
public void setDisplayCreditCardNo(String displayCreditCardNo) {
this.displayCreditCardNo = displayCreditCardNo;
}
public String getPaymentStatus() {
return paymentStatus;
}
public void setPaymentStatus(String paymentStatus) {
this.paymentStatus = paymentStatus;
}
public Map<String, Object> getPaymentDetail() {
return paymentDetail;
}
public void setPaymentDetail(Map<String, Object> paymentDetail) {
this.paymentDetail = paymentDetail;
}
}
package com.nisum.omd.domain;
import java.util.Map;
public class Promotions {
private Map<String,Object> PromotionDetails;
public Map<String, Object> getPromotionDetails() {
return PromotionDetails;
}
public void setPromotionDetails(Map<String, Object> promotionDetails) {
PromotionDetails = promotionDetails;
}
}
package com.nisum.omd.domain;
public class ShipTo {
private String firstName;
private String lastName;
private String addressLine1;
private String city;
private String state;
private String zipCode;
private String country;
private int mobileNum;
private String eMailID;
private boolean residentialAddr;
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getAddressLine1() {
return addressLine1;
}
public void setAddressLine1(String addressLine1) {
this.addressLine1 = addressLine1;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
public String getZipCode() {
return zipCode;
}
public void setZipCode(String zipCode) {
this.zipCode = zipCode;
}
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
public int getMobileNum() {
return mobileNum;
}
public void setMobileNum(int mobileNum) {
this.mobileNum = mobileNum;
}
public String geteMailID() {
return eMailID;
}
public void seteMailID(String eMailID) {
this.eMailID = eMailID;
}
public boolean isResidentialAddr() {
return residentialAddr;
}
public void setResidentialAddr(boolean residentialAddr) {
this.residentialAddr = residentialAddr;
}
}
package com.nisum.omd.domain;
public class ShippingInfo {
private Boolean vaildShipTo;
private int maxDaysToDeliver;
private int minDaysToDeliver;
public Boolean getVaildShipTo() {
return vaildShipTo;
}
public void setVaildShipTo(Boolean vaildShipTo) {
this.vaildShipTo = vaildShipTo;
}
public int getMaxDaysToDeliver() {
return maxDaysToDeliver;
}
public void setMaxDaysToDeliver(int maxDaysToDeliver) {
this.maxDaysToDeliver = maxDaysToDeliver;
}
public int getMinDaysToDeliver() {
return minDaysToDeliver;
}
public void setMinDaysToDeliver(int minDaysToDeliver) {
this.minDaysToDeliver = minDaysToDeliver;
}
}
package com.nisum.omd.listener;
import com.nisum.omd.domain.Order;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.kafka.annotation.KafkaListener;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;
import javax.mail.internet.MimeMessage;
@Service
public class OmdConsumerListener {
@Autowired
private JavaMailSender sender;
Logger logger = LoggerFactory.getLogger(OmdConsumerListener.class);
public static final String TOPIC = "TOPIC_OMD_ORDER_DATA";
public static final String GROUP_ID = "OMD_ORDER_DATA_GROUP";
@KafkaListener(topics = TOPIC, groupId = GROUP_ID, containerFactory = "orderKafkaListenerContainerFactory")
public void consumeMessage(Order order) {
validateOrder(order);
logger.info("Consumed Order Data with Order Number: " + order.getOrderNum());
/*try {
sendEmail();
logger.info("Email Sent Successfully!");
} catch (Exception ex) {
logger.error("Exception while sending the mail!" + ex.getMessage());
}*/
}
private void sendEmail() throws Exception{
MimeMessage message = sender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message);
helper.setTo("reciever@gmail.com");
helper.setText("Your Order Placed Successfully !!");
helper.setSubject("Order Confirmation");
sender.send(message);
}
private void validateOrder(Order order){
if(order.getOrderNum() != null && order.getCustomerId() != null){
logger.info("Your Order is Validated Successfully");
}else{
throw new RuntimeException("Your Order is Invalid: Please check again");
}
}
}
...@@ -51,3 +51,20 @@ OMD-Notification-Kafka-Configuration-Details: ...@@ -51,3 +51,20 @@ OMD-Notification-Kafka-Configuration-Details:
--> kafka-topics --bootstrap-server localhost:9092 --topic TOPIC_OMD_ORDER_DATA --create --partitions 3 --replication-factor 1 --> kafka-topics --bootstrap-server localhost:9092 --topic TOPIC_OMD_ORDER_DATA --create --partitions 3 --replication-factor 1
—> To Check the details of Topic and Partitions : —> To Check the details of Topic and Partitions :
kafka-topics --bootstrap-server localhost:9092 --topic TOPIC_OMD_ORDER_DATA --describe kafka-topics --bootstrap-server localhost:9092 --topic TOPIC_OMD_ORDER_DATA --describe
3. You Need to start omd-checkout-service first as the Producer is configured as part od omd-checkout-service module.
4. Modify the application.properties file in omd-notifications:
--> spring.mail.username = with Sender Email Id
--> spring.mail.password = with Sender Email Password
5. Modify the OmdConsumerListener.java with Recipient Email Id at line no.39.
6. You need to modify the gmail settings to recieve the mail notifications.
--> You can do this for testing in your local machine.
--> Login with Sender Mail Id
--> Go to Manage your Google Account
--> Security Tab
--> Turn on Lass Seccured Apps Access option .
--> Do the same for Reciepient Mail Id also.
7. Then run the omd-notifications app for Consumer and Mail Notifcations on Successful validation of Orders.
\ No newline at end of file
server.port = 8089
bootstrap-server = localhost:9092
group-id = my-order-json-data-group
auto-offset-reset-config = earliest
topic = TOPIC_OMD_ORDER_DATA
spring.mail.host=smtp.gmail.com
spring.mail.port=587
spring.mail.username=username
spring.mail.password=password
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.connectiontimeout=5000
spring.mail.properties.mail.smtp.timeout=5000
spring.mail.properties.mail.smtp.writetimeout=5000
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment