From e13fd58cbfcb4cf3fcc9c126cc28f4fb8a206e15 Mon Sep 17 00:00:00 2001 From: Gowrisankar J g <59323@hexaware.com> Date: Mon, 27 Sep 2021 18:21:22 +0530 Subject: [PATCH] rabbit mq integrated --- UB_OrderServiceProxy/pom.xml | 11 +++- .../urbanbazaar/config/MessagingConfig.java | 48 +++++++++++++++ .../controller/OrderController.java | 14 ++++- .../urbanbazaar/model/OrderStatus.java | 59 +++++++++++++++++++ .../com/example/urbanbazaar/model/Orders.java | 11 ++-- .../repository/OrderRepository.java | 2 +- .../src/main/resources/application.properties | 9 ++- .../UbUserServiceProxyApplication.java | 2 +- .../controller/UserController.java | 41 +++++++------ grocery_db_tables.sql | 22 +++---- springboot-rabbitmq-example | 1 + 11 files changed, 180 insertions(+), 40 deletions(-) create mode 100644 UB_OrderServiceProxy/src/main/java/com/example/urbanbazaar/config/MessagingConfig.java create mode 100644 UB_OrderServiceProxy/src/main/java/com/example/urbanbazaar/model/OrderStatus.java create mode 160000 springboot-rabbitmq-example diff --git a/UB_OrderServiceProxy/pom.xml b/UB_OrderServiceProxy/pom.xml index 3fe42f8..1f69943 100644 --- a/UB_OrderServiceProxy/pom.xml +++ b/UB_OrderServiceProxy/pom.xml @@ -17,6 +17,10 @@ 1.8 + + org.springframework.boot + spring-boot-starter-amqp + org.springframework.boot spring-boot-starter-data-jpa @@ -25,7 +29,12 @@ org.springframework.boot spring-boot-starter-web - + + org.projectlombok + lombok + true + + org.springframework.boot spring-boot-devtools diff --git a/UB_OrderServiceProxy/src/main/java/com/example/urbanbazaar/config/MessagingConfig.java b/UB_OrderServiceProxy/src/main/java/com/example/urbanbazaar/config/MessagingConfig.java new file mode 100644 index 0000000..2651d77 --- /dev/null +++ b/UB_OrderServiceProxy/src/main/java/com/example/urbanbazaar/config/MessagingConfig.java @@ -0,0 +1,48 @@ +package com.example.urbanbazaar.config; + +import org.springframework.amqp.core.AmqpTemplate; +import org.springframework.amqp.core.Binding; +import org.springframework.amqp.core.BindingBuilder; +import org.springframework.amqp.core.Queue; +import org.springframework.amqp.core.TopicExchange; +import org.springframework.amqp.rabbit.connection.ConnectionFactory; +import org.springframework.amqp.rabbit.core.RabbitTemplate; +import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter; +import org.springframework.amqp.support.converter.MessageConverter; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class MessagingConfig { + + public static final String QUEUE = "team_berlin_gs"; + public static final String EXCHANGE = "team_berlin_exchange"; + public static final String ROUTING_KEY = "team_berlin_routingKey"; + + @Bean + public Queue queue() { + return new Queue(QUEUE); + } + + @Bean + public TopicExchange exchange() { + return new TopicExchange(EXCHANGE); + } + + @Bean + public Binding binding(Queue queue, TopicExchange exchange) { + return BindingBuilder.bind(queue).to(exchange).with(ROUTING_KEY); + } + + @Bean + public MessageConverter converter() { + return new Jackson2JsonMessageConverter(); + } + + @Bean + public AmqpTemplate template(ConnectionFactory connectionFactory) { + final RabbitTemplate rabbitTemplate = new RabbitTemplate(connectionFactory); + rabbitTemplate.setMessageConverter(converter()); + return rabbitTemplate; + } +} diff --git a/UB_OrderServiceProxy/src/main/java/com/example/urbanbazaar/controller/OrderController.java b/UB_OrderServiceProxy/src/main/java/com/example/urbanbazaar/controller/OrderController.java index 23ba804..6b77ebc 100644 --- a/UB_OrderServiceProxy/src/main/java/com/example/urbanbazaar/controller/OrderController.java +++ b/UB_OrderServiceProxy/src/main/java/com/example/urbanbazaar/controller/OrderController.java @@ -3,6 +3,7 @@ package com.example.urbanbazaar.controller; import java.util.List; import java.util.NoSuchElementException; +import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -12,19 +13,26 @@ import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; +import com.example.urbanbazaar.config.MessagingConfig; +import com.example.urbanbazaar.model.OrderStatus; import com.example.urbanbazaar.model.Orders; import com.example.urbanbazaar.repository.OrderRepository; - @RestController public class OrderController { @Autowired private OrderRepository repo; + + @Autowired + private RabbitTemplate template; @PostMapping("/addOrder") - public void addOrders( @RequestBody Orders order) { + public String addOrders(@RequestBody Orders order) { repo.save(order); + OrderStatus orderStatus = new OrderStatus(order, "PROCESS", "order placed successfully !! ("+order.getUserid()+")"); + template.convertAndSend(MessagingConfig.EXCHANGE, MessagingConfig.ROUTING_KEY, orderStatus); + return "Success !!"; } @GetMapping("/findOrder/{id}") @@ -42,7 +50,7 @@ public class OrderController { public ResponseEntity> findOrderByUser(@PathVariable Integer id) { try { - List orders = repo.findByorderuserid(id); + List orders = repo.findByuserid(id); return new ResponseEntity>(orders, HttpStatus.OK); } catch (NoSuchElementException e) { return new ResponseEntity>(HttpStatus.NOT_FOUND); diff --git a/UB_OrderServiceProxy/src/main/java/com/example/urbanbazaar/model/OrderStatus.java b/UB_OrderServiceProxy/src/main/java/com/example/urbanbazaar/model/OrderStatus.java new file mode 100644 index 0000000..ab15e8d --- /dev/null +++ b/UB_OrderServiceProxy/src/main/java/com/example/urbanbazaar/model/OrderStatus.java @@ -0,0 +1,59 @@ +package com.example.urbanbazaar.model; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.ToString; + +@Data +@AllArgsConstructor +@NoArgsConstructor +@ToString +public class OrderStatus { + + private Orders order; + private String status;//progress,completed + private String message; + + public Orders getOrder() { + return order; + } + + public void setOrder(Orders order) { + this.order = order; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public OrderStatus() { + super(); + // TODO Auto-generated constructor stub + } + + public OrderStatus(Orders order, String status, String message) { + super(); + this.order = order; + this.status = status; + this.message = message; + } + + @Override + public String toString() { + return "OrderStatus [order=" + order + ", status=" + status + ", message=" + message + "]"; + } + +} diff --git a/UB_OrderServiceProxy/src/main/java/com/example/urbanbazaar/model/Orders.java b/UB_OrderServiceProxy/src/main/java/com/example/urbanbazaar/model/Orders.java index cc31b91..eb226b2 100644 --- a/UB_OrderServiceProxy/src/main/java/com/example/urbanbazaar/model/Orders.java +++ b/UB_OrderServiceProxy/src/main/java/com/example/urbanbazaar/model/Orders.java @@ -1,6 +1,8 @@ package com.example.urbanbazaar.model; import java.sql.Date; +import java.time.LocalDate; + import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; @@ -16,9 +18,10 @@ public class Orders { private int userid; private float orderamount; private float ordershippingcost; - private Date orderdate; + private String orderdate; private boolean ordershipped; private String ordertrackingnumber; + public int getOrderid() { return orderid; } @@ -43,10 +46,10 @@ public class Orders { public void setOrdershippingcost(float ordershippingcost) { this.ordershippingcost = ordershippingcost; } - public Date getOrderdate() { + public String getOrderdate() { return orderdate; } - public void setOrderdate(Date orderdate) { + public void setOrderdate(String orderdate) { this.orderdate = orderdate; } public boolean isOrdershipped() { @@ -64,7 +67,7 @@ public class Orders { public Orders() {} - public Orders(int orderid, int userid, float orderamount, float ordershippingcost, Date orderdate, + public Orders(int orderid, int userid, float orderamount, float ordershippingcost, String orderdate, boolean ordershipped, String ordertrackingnumber) { super(); this.orderid = orderid; diff --git a/UB_OrderServiceProxy/src/main/java/com/example/urbanbazaar/repository/OrderRepository.java b/UB_OrderServiceProxy/src/main/java/com/example/urbanbazaar/repository/OrderRepository.java index 8a99f49..718524c 100644 --- a/UB_OrderServiceProxy/src/main/java/com/example/urbanbazaar/repository/OrderRepository.java +++ b/UB_OrderServiceProxy/src/main/java/com/example/urbanbazaar/repository/OrderRepository.java @@ -13,5 +13,5 @@ public interface OrderRepository extends JpaRepository { @Query("SELECT o FROM Orders o WHERE o.ordertrackingnumber=:id") public Orders findByTrackId(@Param("id") String id); - public List findByorderuserid(int id); + public List findByuserid(int id); } diff --git a/UB_OrderServiceProxy/src/main/resources/application.properties b/UB_OrderServiceProxy/src/main/resources/application.properties index b0c53bd..d9648ed 100644 --- a/UB_OrderServiceProxy/src/main/resources/application.properties +++ b/UB_OrderServiceProxy/src/main/resources/application.properties @@ -1,6 +1,6 @@ -server.port=8009 +server.port=8019 -spring.datasource.url=jdbc:mysql://10.3.117.21:3306/grocery_db?createDatabaseIfNotExist=true +spring.datasource.url=jdbc:mysql://10.3.117.23:3306/grocery_db?createDatabaseIfNotExist=true spring.datasource.username=testuser spring.datasource.password=Password123 @@ -9,3 +9,8 @@ spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect spring.jpa.hibernate.ddl-auto=update spring.jackson.serialization.fail-on-empty-beans=false + +spring.rabbitmq.port=5672 +spring.rabbitmq.host=labs4.koteshwar.com +spring.rabbitmq.username=guest +spring.rabbitmq.password=guest \ No newline at end of file diff --git a/UB_UserServiceProxy/src/main/java/com/example/urbanbazaar/UbUserServiceProxyApplication.java b/UB_UserServiceProxy/src/main/java/com/example/urbanbazaar/UbUserServiceProxyApplication.java index 9791e29..5be7e9d 100644 --- a/UB_UserServiceProxy/src/main/java/com/example/urbanbazaar/UbUserServiceProxyApplication.java +++ b/UB_UserServiceProxy/src/main/java/com/example/urbanbazaar/UbUserServiceProxyApplication.java @@ -9,5 +9,5 @@ public class UbUserServiceProxyApplication { public static void main(String[] args) { SpringApplication.run(UbUserServiceProxyApplication.class, args); } - + } diff --git a/UB_UserServiceProxy/src/main/java/com/example/urbanbazaar/controller/UserController.java b/UB_UserServiceProxy/src/main/java/com/example/urbanbazaar/controller/UserController.java index 3f597a7..ae2a1e3 100644 --- a/UB_UserServiceProxy/src/main/java/com/example/urbanbazaar/controller/UserController.java +++ b/UB_UserServiceProxy/src/main/java/com/example/urbanbazaar/controller/UserController.java @@ -29,31 +29,38 @@ public class UserController { @Autowired private UserRepository repo; - + @PostMapping("/addUser") - public ResponseEntity addUser(@RequestBody User user) { - String tempusername =user.getUserfirstname(); - if(tempusername !=null && !"".equals(tempusername)) { - User usero=repo.findByuserfirstname(tempusername); - if (usero!=null) { - return new ResponseEntity("user with "+tempusername+ " already exists", HttpStatus.BAD_REQUEST); -// throw new Exception(); + public ResponseEntity addUser(@RequestBody User user) { + String tempusername = user.getUserfirstname(); + if (tempusername != null && !"".equals(tempusername)) { + User usero = repo.findByuserfirstname(tempusername); + if (usero != null) { + return new ResponseEntity("user with " + tempusername + " already exists", + HttpStatus.BAD_REQUEST); } - + } - repo.save(user); - return new ResponseEntity("Registration success !!", HttpStatus.OK);} + repo.save(user); + return new ResponseEntity("Registration success !!", HttpStatus.OK); + } + @PostMapping("/addUsers") + public ResponseEntity> addUsers(@RequestBody List users) { + repo.saveAll(users); + return new ResponseEntity>(users, HttpStatus.OK); + } + @GetMapping("/showAllUsers") public List showUsers() { return repo.findAll(); } - + @GetMapping("/findUserById/{userId}") public User findUserById(@PathVariable int userId) { return repo.findById(userId).get(); } - + @GetMapping("/findUserByName/{name}") public User findUserByName(@PathVariable String name) { return repo.findByuserfirstname(name); @@ -62,16 +69,16 @@ public class UserController { @PostMapping("/login") public ResponseEntity userLogin(@RequestBody UserLogin user) { User currentUser = repo.findByuserfirstname(user.getUserfirstname()); - if(currentUser == null) + if (currentUser == null) return new ResponseEntity("User doesn't exist. Please create a new account.", HttpStatus.NOT_FOUND); - if(!currentUser.getUserpassword().equals(user.getUserpassword())) + if (!currentUser.getUserpassword().equals(user.getUserpassword())) return new ResponseEntity("Password mismatch.", HttpStatus.BAD_REQUEST); return new ResponseEntity("Login success !!", HttpStatus.OK); } - + @PutMapping("/update/") public void update(@RequestBody User user) { - User oldu=repo.findById(user.getUserid()).get(); + User oldu = repo.findById(user.getUserid()).get(); oldu.setUserfirstname(user.getUserfirstname()); oldu.setUserlastname(user.getUserlastname()); oldu.setUseraddress(user.getUseraddress()); diff --git a/grocery_db_tables.sql b/grocery_db_tables.sql index 7d31037..7bb496d 100644 --- a/grocery_db_tables.sql +++ b/grocery_db_tables.sql @@ -5,16 +5,16 @@ use grocery_db; -- Users Table Schema CREATE TABLE `users` ( `UserID` int(11) NOT NULL AUTO_INCREMENT, - `UserFirstName` varchar(20) DEFAULT NULL, - `UserLastName` varchar(20) DEFAULT NULL, - `UserEmail` varchar(20) DEFAULT NULL, - `UserPassword` varchar(20) DEFAULT NULL, - `UserCity` varchar(30) DEFAULT NULL, - `UserState` varchar(20) DEFAULT NULL, - `UserZip` varchar(6) DEFAULT NULL, - `UserPhone` varchar(10) DEFAULT NULL, - `UserAddress` varchar(80) DEFAULT NULL, - `UserAddress2` varchar(80) DEFAULT NULL, + `UserFirstName` varchar(50) DEFAULT NULL, + `UserLastName` varchar(50) DEFAULT NULL, + `UserEmail` varchar(50) DEFAULT NULL, + `UserPassword` varchar(50) DEFAULT NULL, + `UserCity` varchar(50) DEFAULT NULL, + `UserState` varchar(50) DEFAULT NULL, + `UserZip` varchar(10) DEFAULT NULL, + `UserPhone` varchar(50) DEFAULT NULL, + `UserAddress` varchar(150) DEFAULT NULL, + `UserAddress2` varchar(100) DEFAULT NULL, PRIMARY KEY (`UserID`) ); @@ -121,7 +121,7 @@ CREATE TABLE IF NOT EXISTS `orders` ( `UserID` int(11) NOT NULL, `OrderAmount` float NOT NULL, `OrderShippingCost` float NOT NULL, - `OrderDate` date not null, + `OrderDate` varchar(80) not null, `OrderShipped` bool not null default false, `OrderTrackingNumber` varchar(80) DEFAULT NULL, PRIMARY KEY (`OrderID`) diff --git a/springboot-rabbitmq-example b/springboot-rabbitmq-example new file mode 160000 index 0000000..10a0271 --- /dev/null +++ b/springboot-rabbitmq-example @@ -0,0 +1 @@ +Subproject commit 10a0271fcba7f90b09523ad74703297c45b2b620