Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
O
order-management-backend
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Ascend
order-management-backend
Commits
78aa876f
Commit
78aa876f
authored
May 12, 2021
by
Kevin Kaminski
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[AFP-25, AFP-114, AFP115] emails are sent any time an order is created or updated. [
@kkaminski
]
parent
1aef3e57
Pipeline
#1733
failed with stage
in 38 seconds
Changes
6
Pipelines
1
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
34 additions
and
12 deletions
+34
-12
.DS_Store
.DS_Store
+0
-0
OrderController.java
...a/com/afp/ordermanagement/controller/OrderController.java
+1
-0
Receiver.java
...om/afp/ordermanagement/reactivekafkaservice/Receiver.java
+9
-3
Sender.java
.../com/afp/ordermanagement/reactivekafkaservice/Sender.java
+5
-2
EmailService.java
...in/java/com/afp/ordermanagement/service/EmailService.java
+7
-6
application.properties
src/main/resources/application.properties
+12
-1
No files found.
.DS_Store
View file @
78aa876f
No preview for this file type
src/main/java/com/afp/ordermanagement/controller/OrderController.java
View file @
78aa876f
...
...
@@ -3,6 +3,7 @@ package com.afp.ordermanagement.controller;
import
com.afp.ordermanagement.model.Order
;
import
com.afp.ordermanagement.reactivekafkaservice.Receiver
;
import
com.afp.ordermanagement.reactivekafkaservice.Sender
;
import
com.afp.ordermanagement.service.EmailService
;
import
com.afp.ordermanagement.service.OrderService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.http.HttpStatus
;
...
...
src/main/java/com/afp/ordermanagement/reactivekafkaservice/Receiver.java
View file @
78aa876f
...
...
@@ -5,6 +5,7 @@ import com.afp.ordermanagement.model.Item;
import
com.afp.ordermanagement.model.Order
;
import
com.afp.ordermanagement.model.OrderStatus
;
import
com.afp.ordermanagement.repository.OrderRepository
;
import
com.afp.ordermanagement.service.EmailService
;
import
com.afp.ordermanagement.service.OrderService
;
import
com.fasterxml.jackson.databind.JsonNode
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
...
...
@@ -34,13 +35,15 @@ public class Receiver {
@Autowired
private
OrderRepository
orderRepository
;
@Autowired
private
EmailService
emailService
;
@EventListener
(
ApplicationStartedEvent
.
class
)
public
void
consumeOrderStatus
()
{
kafkaReceiver
.
receive
()
.
doOnNext
(
record
->
System
.
out
.
println
(
record
))
.
doOnNext
(
record
->
log
.
info
(
"record.value(): {} "
,
record
.
value
()))
.
doOnNext
(
record
->
updateOrderStatus
(
record
.
value
()))
//
.doOnNext(record -> System.out.println(record))
//
.doOnNext(record -> log.info("record.value(): {} ", record.value()))
//
.doOnNext(record -> updateOrderStatus(record.value()))
.
doOnError
(
throwable
->
System
.
out
.
println
(
throwable
.
getMessage
()))
.
subscribe
();
}
...
...
@@ -55,6 +58,9 @@ public class Receiver {
log
.
info
(
"ORDER objectMapper {}"
,
order
);
String
orderId
=
order
.
getId
();
System
.
out
.
println
(
"About to try sending an email."
);
emailService
.
emailCreator
(
order
);
Mono
<
Order
>
updated
=
orderService
.
updateOrderByOrderId
(
orderId
,
order
);
updated
.
block
();
...
...
src/main/java/com/afp/ordermanagement/reactivekafkaservice/Sender.java
View file @
78aa876f
package
com
.
afp
.
ordermanagement
.
reactivekafkaservice
;
import
com.afp.ordermanagement.model.Order
;
import
com.afp.ordermanagement.service.EmailService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.kafka.clients.producer.ProducerRecord
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
...
@@ -15,8 +16,8 @@ import reactor.kafka.sender.SenderResult;
@Service
@Slf4j
public
class
Sender
{
@Autowired
private
EmailService
emailService
;
@Autowired
private
KafkaSender
<
String
,
Order
>
kafkaEventProducer
;
...
...
@@ -28,6 +29,8 @@ public class Sender {
public
void
sendOrderToWarehouse
(
Order
orderObject
)
{
log
.
info
(
String
.
format
(
"##### -> Sender sending message: %s "
,
orderObject
));
ProducerRecord
<
String
,
Order
>
record
=
new
ProducerRecord
<>(
ORDER_TOPIC
,
orderObject
);
System
.
out
.
println
(
"In sendOrderToWarehouse"
);
emailService
.
emailCreator
(
orderObject
);
Flux
<
SenderResult
<
Order
>>
working
=
kafkaEventProducer
.
send
(
Mono
.
just
(
SenderRecord
.
create
(
record
,
orderObject
)))
.
doOnError
(
throwable
->
System
.
out
.
println
(
throwable
))
.
doOnNext
(
uuidSenderResult
->
{
...
...
src/main/java/com/afp/ordermanagement/service/EmailService.java
View file @
78aa876f
...
...
@@ -22,7 +22,7 @@ public class EmailService {
mailMessage
.
setSubject
(
subject
);
mailMessage
.
setText
(
message
);
mailMessage
.
setFrom
(
"
NOREPLY@nisum
.com"
);
mailMessage
.
setFrom
(
"
kaminskikeving@gmail
.com"
);
javaMailSender
.
send
(
mailMessage
);
}
...
...
@@ -32,16 +32,16 @@ public class EmailService {
String
message1
=
"message "
,
message2
=
"build failed."
;
switch
(
status
)
{
case
RECEIVED:
message1
=
"Hello, you order #"
+
order
.
getId
()
+
" has been received!"
;
message2
=
"
We hope to have your order fulfilled soon."
;
message1
=
"Hello, you
r
order #"
+
order
.
getId
()
+
" has been received!"
;
message2
=
"
We hope to have your order fulfilled soon.\n\n"
+
order
.
getOrderItems
()
;
break
;
case
CANCELLED:
message1
=
"I'm sorry, your order #"
+
order
.
getId
()
+
" has been canceled."
;
message2
=
"For more information, contact {NULL}."
;
message2
=
"
For more information, contact {NULL}."
;
break
;
case
FULFILLED:
message1
=
"Good news everyone! Your order #"
+
order
.
getId
()
+
" has been fulfilled."
;
message2
=
"Your tracking number is: "
+
order
.
getOrderTrackingCode
();
message2
=
"
Your tracking number is: "
+
order
.
getOrderTrackingCode
();
break
;
}
return
message1
+
message2
;
...
...
@@ -60,7 +60,7 @@ public class EmailService {
status
=
"FULFILLED"
;
break
;
}
return
"Your order #"
+
order
.
getId
()
+
" has been"
+
status
;
return
"Your order #"
+
order
.
getId
()
+
" has been
"
+
status
;
}
public
String
toCreator
(
Order
order
)
{
...
...
@@ -73,6 +73,7 @@ public class EmailService {
String
to
=
toCreator
(
order
);
sendMail
(
to
,
subject
,
message
);
return
"Email sent to customer!"
;
}
}
src/main/resources/application.properties
View file @
78aa876f
spring.data.mongodb.uri
=
mongodb+srv://user:password2021@cluster0.g23rm.mongodb.net/myFirstDatabase?
kafka.producer.bootstrap-servers
=
localhost:9092
kafka.producer.acks
=
all
kafka.consumer.bootstrap-servers
=
localhost:9092
kafka.consumer.group-id
=
group_id
kafka.topic.input
=
orders
# Config for MailTrap SMTP Mail testing service
spring.mail.protocol
=
smtp
spring.mail.host
=
smtp.mailtrap.io
...
...
@@ -10,4 +12,13 @@ spring.mail.port=2525
spring.mail.username
=
945a9d376253be
spring.mail.password
=
96d65f623868cc
spring.mail.properties.mail.smtp.auth
=
true
spring.mail.properties.mail.smtp.starttls.enable
=
true
\ No newline at end of file
spring.mail.properties.mail.smtp.starttls.enable
=
false
## Config for GMail SMTP mail sending
#spring.mail.host=smtp.gmail.com
#spring.mail.port=587
#spring.mail.username=gmail email address
#spring.mail.password=gmail email password
#spring.mail.properties.mail.smtp.auth=true
#spring.mail.properties.mail.smtp.starttls.enable=true
#
mail.smtp.debug
=
true
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment