作者 朱兆平

路由消费者接口增加,优化其他业务一些参数

@@ -10,7 +10,7 @@ @@ -10,7 +10,7 @@
10 </parent> 10 </parent>
11 <groupId>com.sunyo.wlpt.message.bus.service</groupId> 11 <groupId>com.sunyo.wlpt.message.bus.service</groupId>
12 <artifactId>message_bus_service</artifactId> 12 <artifactId>message_bus_service</artifactId>
13 - <version>1.1.0-kafka</version> 13 + <version>1.1.2-kafka</version>
14 <name>message_bus_service</name> 14 <name>message_bus_service</name>
15 <description>消息总线服务</description> 15 <description>消息总线服务</description>
16 16
@@ -8,6 +8,7 @@ import org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchAu @@ -8,6 +8,7 @@ import org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchAu
8 import org.springframework.cache.annotation.EnableCaching; 8 import org.springframework.cache.annotation.EnableCaching;
9 import org.springframework.cloud.netflix.eureka.EnableEurekaClient; 9 import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
10 import org.springframework.cloud.openfeign.EnableFeignClients; 10 import org.springframework.cloud.openfeign.EnableFeignClients;
  11 +import org.springframework.context.annotation.ComponentScan;
11 import org.springframework.scheduling.annotation.EnableAsync; 12 import org.springframework.scheduling.annotation.EnableAsync;
12 import org.springframework.scheduling.annotation.EnableScheduling; 13 import org.springframework.scheduling.annotation.EnableScheduling;
13 import org.springframework.transaction.annotation.EnableTransactionManagement; 14 import org.springframework.transaction.annotation.EnableTransactionManagement;
@@ -23,7 +24,6 @@ import org.springframework.transaction.annotation.EnableTransactionManagement; @@ -23,7 +24,6 @@ import org.springframework.transaction.annotation.EnableTransactionManagement;
23 @EnableTransactionManagement 24 @EnableTransactionManagement
24 @EnableScheduling 25 @EnableScheduling
25 @EnableAsync 26 @EnableAsync
26 -  
27 public class MessageBusServiceApplication { 27 public class MessageBusServiceApplication {
28 28
29 public static void main(String[] args) { 29 public static void main(String[] args) {
@@ -4,10 +4,12 @@ import com.sunyo.wlpt.message.bus.service.domain.BusServer; @@ -4,10 +4,12 @@ import com.sunyo.wlpt.message.bus.service.domain.BusServer;
4 import com.sunyo.wlpt.message.bus.service.mapper.BusServerMapper; 4 import com.sunyo.wlpt.message.bus.service.mapper.BusServerMapper;
5 import org.apache.kafka.clients.admin.AdminClient; 5 import org.apache.kafka.clients.admin.AdminClient;
6 import org.apache.kafka.clients.admin.AdminClientConfig; 6 import org.apache.kafka.clients.admin.AdminClientConfig;
  7 +import org.apache.kafka.clients.consumer.ConsumerConfig;
7 import org.apache.kafka.clients.consumer.KafkaConsumer; 8 import org.apache.kafka.clients.consumer.KafkaConsumer;
8 import org.springframework.context.annotation.Bean; 9 import org.springframework.context.annotation.Bean;
9 import org.springframework.context.annotation.Configuration; 10 import org.springframework.context.annotation.Configuration;
10 import org.springframework.kafka.core.KafkaAdmin; 11 import org.springframework.kafka.core.KafkaAdmin;
  12 +import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
11 13
12 import javax.annotation.Resource; 14 import javax.annotation.Resource;
13 import java.util.HashMap; 15 import java.util.HashMap;
@@ -17,12 +19,12 @@ import java.util.Properties; @@ -17,12 +19,12 @@ import java.util.Properties;
17 import java.util.stream.Collectors; 19 import java.util.stream.Collectors;
18 20
19 @Configuration 21 @Configuration
20 -public class KafkaInitialConfiguration { 22 +public class KafkaInitialConfiguration extends WebMvcConfigurerAdapter {
21 23
22 @Resource 24 @Resource
23 private BusServerMapper busServerMapper; 25 private BusServerMapper busServerMapper;
24 26
25 - @Bean 27 + @Bean("myAdminclient")
26 public AdminClient adminClient() { 28 public AdminClient adminClient() {
27 Map<String, Object> configs = new HashMap<>(); 29 Map<String, Object> configs = new HashMap<>();
28 String serverMap = ServerListForMap(); 30 String serverMap = ServerListForMap();
@@ -44,8 +46,9 @@ public class KafkaInitialConfiguration { @@ -44,8 +46,9 @@ public class KafkaInitialConfiguration {
44 } 46 }
45 47
46 48
47 - @Bean 49 + @Bean("myConsumer")
48 public KafkaConsumer<String, String> consumer(){ 50 public KafkaConsumer<String, String> consumer(){
  51 +// ConsumerConfig.MAX_POLL_RECORDS_CONFIG;
49 Properties props = new Properties(); 52 Properties props = new Properties();
50 props.put("bootstrap.servers", ServerListForMap()); 53 props.put("bootstrap.servers", ServerListForMap());
51 props.put("group.id", "systemGroup"); 54 props.put("group.id", "systemGroup");
@@ -8,9 +8,6 @@ import com.sunyo.wlpt.message.bus.service.service.BusQueueService; @@ -8,9 +8,6 @@ import com.sunyo.wlpt.message.bus.service.service.BusQueueService;
8 import com.sunyo.wlpt.message.bus.service.service.KafkaService; 8 import com.sunyo.wlpt.message.bus.service.service.KafkaService;
9 import com.sunyo.wlpt.message.bus.service.service.UserInfoService; 9 import com.sunyo.wlpt.message.bus.service.service.UserInfoService;
10 import org.apache.commons.lang.StringUtils; 10 import org.apache.commons.lang.StringUtils;
11 -import org.apache.kafka.clients.admin.AdminClient;  
12 -import org.springframework.beans.factory.annotation.Autowired;  
13 -import org.springframework.stereotype.Service;  
14 import org.springframework.web.bind.annotation.*; 11 import org.springframework.web.bind.annotation.*;
15 12
16 import javax.annotation.Resource; 13 import javax.annotation.Resource;
@@ -71,13 +71,21 @@ public class RouterController { @@ -71,13 +71,21 @@ public class RouterController {
71 int result=messageRouterService.addRouter(messageRouter); 71 int result=messageRouterService.addRouter(messageRouter);
72 return result>0?new ResultJson("200","路由消息新增成功"):new ResultJson("500","路由消息新增失败"); 72 return result>0?new ResultJson("200","路由消息新增成功"):new ResultJson("500","路由消息新增失败");
73 } 73 }
  74 +
  75 + @PostMapping("/addReciverByRouter")
  76 + public ResultJson addReciverByRouter(@RequestBody MessageRouterReciver reciver) {
  77 +
  78 + int result=messageRouterReciverService.addMessageRouterReciver(reciver);
  79 + return result>0?new ResultJson("200","路由消息新增成功"):new ResultJson("500","路由消息新增失败");
  80 + }
  81 +
74 @RequestMapping("/delRouter") 82 @RequestMapping("/delRouter")
75 public ResultJson delRouter(@RequestParam(value = "id", required = false) String id)throws Exception{ 83 public ResultJson delRouter(@RequestParam(value = "id", required = false) String id)throws Exception{
76 int result=messageRouterService.delRouter(id); 84 int result=messageRouterService.delRouter(id);
77 return result>0?new ResultJson("200","路由消息删除成功"):new ResultJson("500","路由消息删除失败"); 85 return result>0?new ResultJson("200","路由消息删除成功"):new ResultJson("500","路由消息删除失败");
78 } 86 }
79 @PutMapping("/ediRouter") 87 @PutMapping("/ediRouter")
80 - public ResultJson edi(@RequestBody MessageRouter messageRouter)throws Exception { 88 + public ResultJson edi(@RequestBody MessageRouter messageRouter){
81 int result=messageRouterService.ediRouter(messageRouter); 89 int result=messageRouterService.ediRouter(messageRouter);
82 return result>0?new ResultJson("200","路由消息修改成功"):new ResultJson("500","路由消息修改失败"); 90 return result>0?new ResultJson("200","路由消息修改成功"):new ResultJson("500","路由消息修改失败");
83 } 91 }
  1 +package com.sunyo.wlpt.message.bus.service.controller;
  2 +
  3 +
  4 +import com.github.pagehelper.PageInfo;
  5 +import com.sunyo.wlpt.message.bus.service.model.MessageRouter;
  6 +import com.sunyo.wlpt.message.bus.service.model.MessageRouterReciver;
  7 +import com.sunyo.wlpt.message.bus.service.response.ResultJson;
  8 +import com.sunyo.wlpt.message.bus.service.service.MessageRouterReciverService;
  9 +import com.sunyo.wlpt.message.bus.service.utils.IdUtils;
  10 +import io.swagger.annotations.ApiOperation;
  11 +import org.apache.commons.lang.StringUtils;
  12 +import org.springframework.beans.factory.annotation.Autowired;
  13 +import org.springframework.transaction.annotation.Propagation;
  14 +import org.springframework.transaction.annotation.Transactional;
  15 +import org.springframework.web.bind.annotation.*;
  16 +
  17 +@RequestMapping("/bus/router")
  18 +@RestController
  19 +public class RouterReceiverController {
  20 +
  21 + @Autowired
  22 + MessageRouterReciverService messageRouterReciverService;
  23 +
  24 +
  25 + @ApiOperation(value = "添加路由接收者", notes = "添加路由接收者数组,参数必须要有:路由ID,接收者数组rcvrs")
  26 + @PostMapping("/receiver")
  27 + public ResultJson batchAddRouter(@RequestBody MessageRouter messageRouter){
  28 + boolean result = messageRouterReciverService.batchAddMessageRouterReciver(messageRouter);
  29 + return result ? new ResultJson("200","success") :new ResultJson("400","添加失败,没有订阅者或出现异常");
  30 + }
  31 +
  32 + @ApiOperation(value = "删除路由接收者接口", notes = "接收路由接收者对象,根据接收者ID进行删除")
  33 + @DeleteMapping("/receiver")
  34 + public ResultJson del(@RequestBody MessageRouterReciver reciver){
  35 + boolean result = messageRouterReciverService.delReciver(reciver);
  36 + return result ? new ResultJson("200","success") :new ResultJson("400","添加失败,没有订阅者或出现异常");
  37 + }
  38 +}
1 package com.sunyo.wlpt.message.bus.service.service; 1 package com.sunyo.wlpt.message.bus.service.service;
2 2
  3 +import com.sunyo.wlpt.message.bus.service.model.MessageRouter;
3 import com.sunyo.wlpt.message.bus.service.model.MessageRouterReciver; 4 import com.sunyo.wlpt.message.bus.service.model.MessageRouterReciver;
4 5
5 public interface MessageRouterReciverService { 6 public interface MessageRouterReciverService {
6 - int addMessageRouterReciver(MessageRouterReciver messageRouterReciver)throws Exception; 7 + int addMessageRouterReciver(MessageRouterReciver messageRouterReciver);
  8 + boolean delReciver(MessageRouterReciver messageRouterReciver);
  9 + boolean batchAddMessageRouterReciver(MessageRouter messageRouter);
7 } 10 }
@@ -6,7 +6,7 @@ import com.sunyo.wlpt.message.bus.service.model.MessageRouter; @@ -6,7 +6,7 @@ import com.sunyo.wlpt.message.bus.service.model.MessageRouter;
6 public interface MessageRouterService { 6 public interface MessageRouterService {
7 int addRouter(MessageRouter messageRouter)throws Exception; 7 int addRouter(MessageRouter messageRouter)throws Exception;
8 int delRouter(String id)throws Exception; 8 int delRouter(String id)throws Exception;
9 - int ediRouter(MessageRouter messageRouter)throws Exception; 9 + int ediRouter(MessageRouter messageRouter);
10 int selectCountRouter(MessageRouter messageRouter); 10 int selectCountRouter(MessageRouter messageRouter);
11 PageInfo<MessageRouter> queRouterList(MessageRouter messageRouter,int pageNum,int pageSize)throws Exception; 11 PageInfo<MessageRouter> queRouterList(MessageRouter messageRouter,int pageNum,int pageSize)throws Exception;
12 } 12 }
@@ -87,7 +87,7 @@ public class MessageRouterImpl implements MessageRouterService { @@ -87,7 +87,7 @@ public class MessageRouterImpl implements MessageRouterService {
87 } 87 }
88 88
89 @Override 89 @Override
90 - public int ediRouter(MessageRouter messageRouter) throws Exception { 90 + public int ediRouter(MessageRouter messageRouter) {
91 return messageRouterMapper.updateByPrimaryKeySelective(messageRouter); 91 return messageRouterMapper.updateByPrimaryKeySelective(messageRouter);
92 } 92 }
93 93
1 package com.sunyo.wlpt.message.bus.service.service.impl; 1 package com.sunyo.wlpt.message.bus.service.service.impl;
2 2
3 import com.sunyo.wlpt.message.bus.service.mapper.MessageRouterReciverMapper; 3 import com.sunyo.wlpt.message.bus.service.mapper.MessageRouterReciverMapper;
  4 +import com.sunyo.wlpt.message.bus.service.model.MessageRouter;
4 import com.sunyo.wlpt.message.bus.service.model.MessageRouterReciver; 5 import com.sunyo.wlpt.message.bus.service.model.MessageRouterReciver;
  6 +import com.sunyo.wlpt.message.bus.service.response.ResultJson;
5 import com.sunyo.wlpt.message.bus.service.service.MessageRouterReciverService; 7 import com.sunyo.wlpt.message.bus.service.service.MessageRouterReciverService;
  8 +import com.sunyo.wlpt.message.bus.service.utils.IdUtils;
  9 +import org.apache.commons.lang.StringUtils;
6 import org.springframework.beans.factory.annotation.Autowired; 10 import org.springframework.beans.factory.annotation.Autowired;
7 import org.springframework.stereotype.Service; 11 import org.springframework.stereotype.Service;
  12 +import org.springframework.transaction.annotation.Transactional;
  13 +
  14 +import javax.annotation.Resource;
8 15
9 @Service 16 @Service
10 public class MessageRouterReciverImpl implements MessageRouterReciverService { 17 public class MessageRouterReciverImpl implements MessageRouterReciverService {
11 - @Autowired 18 +
  19 + @Resource
12 MessageRouterReciverMapper messageRouterReciverMapper; 20 MessageRouterReciverMapper messageRouterReciverMapper;
  21 +
  22 +
13 @Override 23 @Override
14 - public int addMessageRouterReciver(MessageRouterReciver messageRouterReciver) throws Exception { 24 + public int addMessageRouterReciver(MessageRouterReciver messageRouterReciver) {
15 return messageRouterReciverMapper.insertSelective(messageRouterReciver); 25 return messageRouterReciverMapper.insertSelective(messageRouterReciver);
16 } 26 }
  27 +
  28 + @Override
  29 + public boolean delReciver(MessageRouterReciver messageRouterReciver) {
  30 + int i = messageRouterReciverMapper.deleteByPrimaryKey(messageRouterReciver.getId());
  31 + return i>0;
  32 + }
  33 +
  34 + @Override
  35 + @Transactional(rollbackFor = Exception.class)
  36 + public boolean batchAddMessageRouterReciver(MessageRouter messageRouter) {
  37 + int i =0;
  38 + if (StringUtils.isNotBlank(messageRouter.getId())){
  39 + if (messageRouter.getRcvrs()!=null && !messageRouter.getRcvrs().isEmpty()){
  40 + // 获取订阅者列表,循环添加
  41 + for (String rcvr: messageRouter.getRcvrs()
  42 + ) {
  43 + MessageRouterReciver reciver = new MessageRouterReciver();
  44 + reciver.setRcvrTopic(rcvr);
  45 + reciver.setMessageRouterId(messageRouter.getId());
  46 + reciver.setId(IdUtils.generateId());
  47 + i += messageRouterReciverMapper.insertSelective(reciver);
  48 + }
  49 + }
  50 + return i > 0;
  51 + }else {
  52 + return false;
  53 + }
  54 + }
17 } 55 }
@@ -16,6 +16,7 @@ import org.apache.kafka.common.KafkaFuture; @@ -16,6 +16,7 @@ import org.apache.kafka.common.KafkaFuture;
16 import org.apache.kafka.common.PartitionInfo; 16 import org.apache.kafka.common.PartitionInfo;
17 import org.apache.kafka.common.TopicPartition; 17 import org.apache.kafka.common.TopicPartition;
18 import org.springframework.beans.factory.annotation.Autowired; 18 import org.springframework.beans.factory.annotation.Autowired;
  19 +import org.springframework.beans.factory.annotation.Qualifier;
19 import org.springframework.kafka.core.KafkaAdmin; 20 import org.springframework.kafka.core.KafkaAdmin;
20 import org.springframework.stereotype.Service; 21 import org.springframework.stereotype.Service;
21 import javax.annotation.Resource; 22 import javax.annotation.Resource;
@@ -34,10 +35,12 @@ public class KafkaServiceImp implements KafkaService { @@ -34,10 +35,12 @@ public class KafkaServiceImp implements KafkaService {
34 private BusServerMapper busServerMapper; 35 private BusServerMapper busServerMapper;
35 36
36 @Autowired 37 @Autowired
37 - private AdminClient KAFKA_ADMIN_CLIENT ; 38 + @Qualifier("myAdminclient")
  39 + AdminClient KAFKA_ADMIN_CLIENT ;
38 40
39 @Autowired 41 @Autowired
40 - private KafkaConsumer KAFKA_CONSUMER; 42 + @Qualifier("myConsumer")
  43 + KafkaConsumer KAFKA_CONSUMER;
41 44
42 @Resource 45 @Resource
43 ConsumerGroupMapper consumerGroupMapper; 46 ConsumerGroupMapper consumerGroupMapper;
@@ -160,7 +163,6 @@ public class KafkaServiceImp implements KafkaService { @@ -160,7 +163,6 @@ public class KafkaServiceImp implements KafkaService {
160 props.put("enable.auto.commit", "true"); 163 props.put("enable.auto.commit", "true");
161 props.put("auto.offset.reset", "earliest"); 164 props.put("auto.offset.reset", "earliest");
162 props.put("auto.commit.interval.ms", "1000"); 165 props.put("auto.commit.interval.ms", "1000");
163 - props.put("auto.commit.interval.ms", "1000");  
164 props.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer"); 166 props.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
165 props.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer"); 167 props.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
166 KafkaConsumer<String, String> consumer = new KafkaConsumer<>(props); 168 KafkaConsumer<String, String> consumer = new KafkaConsumer<>(props);