0


RabbitMQ集成进Spring项目以AMQP的形式------RabbitMQ

  1. package com.alatus.mall.cart.web;
  2. import com.alatus.mall.cart.service.CartService;
  3. import com.alatus.mall.cart.vo.Cart;
  4. import com.alatus.mall.cart.vo.CartItem;
  5. import org.springframework.amqp.core.AmqpAdmin;
  6. import org.springframework.amqp.core.Binding;
  7. import org.springframework.amqp.core.DirectExchange;
  8. import org.springframework.amqp.core.Queue;
  9. import org.springframework.beans.factory.annotation.Autowired;
  10. import org.springframework.stereotype.Controller;
  11. import org.springframework.ui.Model;
  12. import org.springframework.web.bind.annotation.GetMapping;
  13. import org.springframework.web.bind.annotation.PathVariable;
  14. import org.springframework.web.bind.annotation.RequestParam;
  15. import org.springframework.web.servlet.mvc.support.RedirectAttributes;
  16. import java.util.concurrent.ExecutionException;
  17. @Controller
  18. public class CartController {
  19. @Autowired
  20. private CartService cartService;
  21. @Autowired
  22. private AmqpAdmin amqpAdmin;
  23. @GetMapping("/cart.html")
  24. public String cartListPage(Model model) throws ExecutionException, InterruptedException {
  25. Cart cart = cartService.getCart();
  26. model.addAttribute("cart",cart);
  27. return "cartList";
  28. }
  29. @GetMapping("/deleteItem")
  30. public String deleteItem(@RequestParam("skuId")Long skuId){
  31. cartService.deleteItem(skuId);
  32. return "redirect:http://cart.alatusmall.com/cart.html";
  33. }
  34. @GetMapping("/createExchange")
  35. public void createExchange(){
  36. // 声明交换机
  37. DirectExchange directExchange = new DirectExchange("helloWorld",true,false);
  38. amqpAdmin.declareExchange(directExchange);
  39. // 队列不能有排他性,要都能连接到这个队列才是正确的
  40. Queue helloJava = new Queue("helloJava", true, true,false);
  41. amqpAdmin.declareQueue(helloJava);
  42. Binding binding = new Binding("helloJava", Binding.DestinationType.QUEUE,"helloWorld","hello",null);
  43. amqpAdmin.declareBinding(binding);
  44. }
  45. @GetMapping("/countItem")
  46. public String countItem(@RequestParam("skuId") Long skuId, @RequestParam("num") Integer num){
  47. cartService.changeItemCount(skuId,num);
  48. return "redirect:http://cart.alatusmall.com/cart.html";
  49. }
  50. @GetMapping("/addToCart")
  51. public String addToCart(@RequestParam("skuId") Long skuId, @RequestParam("num") Integer num, RedirectAttributes model) throws ExecutionException, InterruptedException {
  52. if(num > 0){
  53. cartService.addToCart(skuId,num);
  54. // RedirectAttributes的addAttribute会自动拼串,自动以参数的形式携带数据
  55. // RedirectAttributes的addFlashAttribute()会保存在session里面,但是仅可以取一次值
  56. model.addAttribute("skuId",skuId);
  57. return "redirect:http://cart.alatusmall.com/addToCartSuccess.html";
  58. }
  59. return "redirect:http://cart.alatusmall.com/addToCartSuccess.html";
  60. }
  61. @GetMapping("/checkItem")
  62. public String checkItem(@RequestParam("skuId")Long skuId,@RequestParam("check")Integer check){
  63. cartService.checkItem(skuId,check);
  64. return "redirect:http://cart.alatusmall.com/cart.html";
  65. }
  66. @GetMapping("/addToCartSuccess.html")
  67. public String addToCartSuccessPage(@RequestParam("skuId")Long skuId,Model model){
  68. CartItem cartItem = cartService.getCartItem(skuId);
  69. model.addAttribute("item",cartItem);
  70. return "success";
  71. }
  72. }
  1. package com.alatus.mall.cart.web;
  2. import com.alatus.mall.cart.service.CartService;
  3. import com.alatus.mall.cart.vo.Cart;
  4. import com.alatus.mall.cart.vo.CartItem;
  5. import org.springframework.amqp.core.AmqpAdmin;
  6. import org.springframework.amqp.core.Binding;
  7. import org.springframework.amqp.core.DirectExchange;
  8. import org.springframework.amqp.core.Queue;
  9. import org.springframework.beans.factory.annotation.Autowired;
  10. import org.springframework.stereotype.Controller;
  11. import org.springframework.ui.Model;
  12. import org.springframework.web.bind.annotation.GetMapping;
  13. import org.springframework.web.bind.annotation.PathVariable;
  14. import org.springframework.web.bind.annotation.RequestParam;
  15. import org.springframework.web.servlet.mvc.support.RedirectAttributes;
  16. import java.util.concurrent.ExecutionException;
  17. @Controller
  18. public class CartController {
  19. @Autowired
  20. private CartService cartService;
  21. @Autowired
  22. private AmqpAdmin amqpAdmin;
  23. @GetMapping("/cart.html")
  24. public String cartListPage(Model model) throws ExecutionException, InterruptedException {
  25. Cart cart = cartService.getCart();
  26. model.addAttribute("cart",cart);
  27. return "cartList";
  28. }
  29. @GetMapping("/deleteItem")
  30. public String deleteItem(@RequestParam("skuId")Long skuId){
  31. cartService.deleteItem(skuId);
  32. return "redirect:http://cart.alatusmall.com/cart.html";
  33. }
  34. @GetMapping("/createExchange")
  35. public void createExchange(){
  36. // 声明交换机
  37. DirectExchange directExchange = new DirectExchange("helloWorld",true,false);
  38. amqpAdmin.declareExchange(directExchange);
  39. // 队列不能有排他性,要都能连接到这个队列才是正确的
  40. Queue helloJava = new Queue("helloJava", true, true,false);
  41. amqpAdmin.declareQueue(helloJava);
  42. Binding binding = new Binding("helloJava", Binding.DestinationType.QUEUE,"helloWorld","hello",null);
  43. amqpAdmin.declareBinding(binding);
  44. }
  45. @GetMapping("/countItem")
  46. public String countItem(@RequestParam("skuId") Long skuId, @RequestParam("num") Integer num){
  47. cartService.changeItemCount(skuId,num);
  48. return "redirect:http://cart.alatusmall.com/cart.html";
  49. }
  50. @GetMapping("/addToCart")
  51. public String addToCart(@RequestParam("skuId") Long skuId, @RequestParam("num") Integer num, RedirectAttributes model) throws ExecutionException, InterruptedException {
  52. if(num > 0){
  53. cartService.addToCart(skuId,num);
  54. // RedirectAttributes的addAttribute会自动拼串,自动以参数的形式携带数据
  55. // RedirectAttributes的addFlashAttribute()会保存在session里面,但是仅可以取一次值
  56. model.addAttribute("skuId",skuId);
  57. return "redirect:http://cart.alatusmall.com/addToCartSuccess.html";
  58. }
  59. return "redirect:http://cart.alatusmall.com/addToCartSuccess.html";
  60. }
  61. @GetMapping("/checkItem")
  62. public String checkItem(@RequestParam("skuId")Long skuId,@RequestParam("check")Integer check){
  63. cartService.checkItem(skuId,check);
  64. return "redirect:http://cart.alatusmall.com/cart.html";
  65. }
  66. @GetMapping("/addToCartSuccess.html")
  67. public String addToCartSuccessPage(@RequestParam("skuId")Long skuId,Model model){
  68. CartItem cartItem = cartService.getCartItem(skuId);
  69. model.addAttribute("item",cartItem);
  70. return "success";
  71. }
  72. }
  1. spring.application.name=Mall-cart
  2. spring.rabbitmq.host=192.168.56.10
  3. spring.rabbitmq.port=5672
  4. spring.rabbitmq.virtual-host=/
  5. server.port=30000
  6. spring.redis.host=192.168.56.10
  7. spring.redis.port=6379
  8. alatusmall.thread.keep-alive-time=10
  9. alatusmall.thread.blocking-deque=100000
  10. alatusmall.thread.core-size=20
  11. alatusmall.thread.max-size=200
  12. spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
  1. spring.application.name=Mall-cart
  2. spring.rabbitmq.host=192.168.56.10
  3. spring.rabbitmq.port=5672
  4. spring.rabbitmq.virtual-host=/
  5. server.port=30000
  6. spring.redis.host=192.168.56.10
  7. spring.redis.port=6379
  8. alatusmall.thread.keep-alive-time=10
  9. alatusmall.thread.blocking-deque=100000
  10. alatusmall.thread.core-size=20
  11. alatusmall.thread.max-size=200
  12. spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
  1. package com.alatus.mall.cart;
  2. import org.springframework.amqp.rabbit.annotation.EnableRabbit;
  3. import org.springframework.boot.SpringApplication;
  4. import org.springframework.boot.autoconfigure.SpringBootApplication;
  5. import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
  6. import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
  7. import org.springframework.cloud.openfeign.EnableFeignClients;
  8. @SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
  9. @EnableDiscoveryClient
  10. @EnableFeignClients
  11. @EnableRabbit
  12. public class MallCartApplication {
  13. public static void main(String[] args) {
  14. SpringApplication.run(MallCartApplication.class, args);
  15. }
  16. }
  1. package com.alatus.mall.cart;
  2. import org.springframework.amqp.rabbit.annotation.EnableRabbit;
  3. import org.springframework.boot.SpringApplication;
  4. import org.springframework.boot.autoconfigure.SpringBootApplication;
  5. import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
  6. import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
  7. import org.springframework.cloud.openfeign.EnableFeignClients;
  8. @SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
  9. @EnableDiscoveryClient
  10. @EnableFeignClients
  11. @EnableRabbit
  12. public class MallCartApplication {
  13. public static void main(String[] args) {
  14. SpringApplication.run(MallCartApplication.class, args);
  15. }
  16. }

本文转载自: https://blog.csdn.net/2201_75960169/article/details/142624463
版权归原作者 旧约Alatus 所有, 如有侵权,请联系我们删除。

“RabbitMQ集成进Spring项目以AMQP的形式------RabbitMQ”的评论:

还没有评论