作者 朱兆平

将kafka的相关BEAN初始化配置,增加过滤器接口

@@ -29,3 +29,6 @@ build/ @@ -29,3 +29,6 @@ build/
29 29
30 ### VS Code ### 30 ### VS Code ###
31 .vscode/ 31 .vscode/
  32 +/out/
  33 +/src/META-INF/
  34 +/docker/*.jar
@@ -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.0.0</version> 13 + <version>1.1.0-kafka</version>
14 <name>message_bus_service</name> 14 <name>message_bus_service</name>
15 <description>消息总线服务</description> 15 <description>消息总线服务</description>
16 16
@@ -272,6 +272,23 @@ @@ -272,6 +272,23 @@
272 <groupId>org.springframework.boot</groupId> 272 <groupId>org.springframework.boot</groupId>
273 <artifactId>spring-boot-maven-plugin</artifactId> 273 <artifactId>spring-boot-maven-plugin</artifactId>
274 </plugin> 274 </plugin>
  275 + <plugin>
  276 + <artifactId>maven-antrun-plugin</artifactId>
  277 + <executions>
  278 + <execution>
  279 + <id>gen-webadmin</id>
  280 + <phase>package</phase>
  281 + <configuration>
  282 + <tasks>
  283 + <copy todir="docker" file="target/${project.artifactId}-${project.version}.${project.packaging}" />
  284 + </tasks>
  285 + </configuration>
  286 + <goals>
  287 + <goal>run</goal>
  288 + </goals>
  289 + </execution>
  290 + </executions>
  291 + </plugin>
275 <!-- mybatis generator 自动生成代码插件 --> 292 <!-- mybatis generator 自动生成代码插件 -->
276 <plugin> 293 <plugin>
277 <groupId>org.mybatis.generator</groupId> 294 <groupId>org.mybatis.generator</groupId>
@@ -4,6 +4,7 @@ import com.sunyo.wlpt.message.bus.service.domain.BusServer; @@ -4,6 +4,7 @@ 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.KafkaConsumer;
7 import org.springframework.context.annotation.Bean; 8 import org.springframework.context.annotation.Bean;
8 import org.springframework.context.annotation.Configuration; 9 import org.springframework.context.annotation.Configuration;
9 import org.springframework.kafka.core.KafkaAdmin; 10 import org.springframework.kafka.core.KafkaAdmin;
@@ -12,15 +13,16 @@ import javax.annotation.Resource; @@ -12,15 +13,16 @@ import javax.annotation.Resource;
12 import java.util.HashMap; 13 import java.util.HashMap;
13 import java.util.List; 14 import java.util.List;
14 import java.util.Map; 15 import java.util.Map;
  16 +import java.util.Properties;
15 import java.util.stream.Collectors; 17 import java.util.stream.Collectors;
16 18
17 -//@Configuration 19 +@Configuration
18 public class KafkaInitialConfiguration { 20 public class KafkaInitialConfiguration {
19 21
20 -// @Resource 22 + @Resource
21 private BusServerMapper busServerMapper; 23 private BusServerMapper busServerMapper;
22 24
23 -// @Bean 25 + @Bean
24 public AdminClient adminClient() { 26 public AdminClient adminClient() {
25 Map<String, Object> configs = new HashMap<>(); 27 Map<String, Object> configs = new HashMap<>();
26 String serverMap = ServerListForMap(); 28 String serverMap = ServerListForMap();
@@ -40,4 +42,20 @@ public class KafkaInitialConfiguration { @@ -40,4 +42,20 @@ public class KafkaInitialConfiguration {
40 42
41 return KAFKA_SERVERS; 43 return KAFKA_SERVERS;
42 } 44 }
  45 +
  46 +
  47 + @Bean
  48 + public KafkaConsumer<String, String> consumer(){
  49 + Properties props = new Properties();
  50 + props.put("bootstrap.servers", ServerListForMap());
  51 + props.put("group.id", "test");
  52 + props.put("enable.auto.commit", "true");
  53 + props.put("auto.offset.reset", "earliest");
  54 + props.put("auto.commit.interval.ms", "1000");
  55 + props.put("auto.commit.interval.ms", "1000");
  56 + props.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
  57 + props.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
  58 + KafkaConsumer<String, String> consumer = new KafkaConsumer<>(props);
  59 + return consumer;
  60 + }
43 } 61 }
@@ -67,25 +67,8 @@ public class RouterController { @@ -67,25 +67,8 @@ public class RouterController {
67 if(count>0){ 67 if(count>0){
68 return new ResultJson("200","路由消息已存在!"); 68 return new ResultJson("200","路由消息已存在!");
69 } 69 }
70 - String routerid=UUID.randomUUID().toString();  
71 - String reciverid=UUID.randomUUID().toString();  
72 - messageRouter.setId(routerid); 70 +
73 int result=messageRouterService.addRouter(messageRouter); 71 int result=messageRouterService.addRouter(messageRouter);
74 - //没有指定接收者只添加路由  
75 - if(messageRouter.getReciver()!=null && messageRouter.getReciver().getRcvrTopic()!=null && messageRouter.getReciver().getRcvrTopic()!=""){  
76 - MessageRouterReciver routerReciver=new MessageRouterReciver();  
77 - routerReciver.setId(reciverid);  
78 - routerReciver.setMessageRouterId(routerid);  
79 - routerReciver.setRcvrTopic(messageRouter.getReciver().getRcvrTopic());  
80 - messageRouterReciverService.addMessageRouterReciver(routerReciver);  
81 - if(messageRouter.getReciver().getReciverFilter()!=null && messageRouter.getReciver().getReciverFilter().getFilter()!=null&& messageRouter.getReciver().getReciverFilter().getFilter()!=""){  
82 - MessageRouterReciverFilter routerReciverFilter=new MessageRouterReciverFilter();  
83 - routerReciverFilter.setId(UUID.randomUUID().toString());  
84 - routerReciverFilter.setMessageRouterReciverId(reciverid);  
85 - routerReciverFilter.setFilter(messageRouter.getReciver().getReciverFilter().getFilter());  
86 - messageRouterReciverFilterService.addMessageRouterReciverFilter(routerReciverFilter);  
87 - }  
88 - }  
89 return result>0?new ResultJson("200","路由消息新增成功"):new ResultJson("500","路由消息新增失败"); 72 return result>0?new ResultJson("200","路由消息新增成功"):new ResultJson("500","路由消息新增失败");
90 } 73 }
91 @RequestMapping("/delRouter") 74 @RequestMapping("/delRouter")
  1 +package com.sunyo.wlpt.message.bus.service.controller;
  2 +
  3 +import com.github.pagehelper.PageInfo;
  4 +import com.sunyo.wlpt.message.bus.service.model.MessageRouter;
  5 +import com.sunyo.wlpt.message.bus.service.model.MessageRouterReciverFilter;
  6 +import com.sunyo.wlpt.message.bus.service.response.ResultJson;
  7 +import com.sunyo.wlpt.message.bus.service.service.MessageRouterReciverFilterService;
  8 +import org.springframework.beans.factory.annotation.Autowired;
  9 +import org.springframework.web.bind.annotation.*;
  10 +import java.util.List;
  11 +/**
  12 + * 路由接收者过滤器接口
  13 + */
  14 +@RequestMapping("/bus")
  15 +@RestController
  16 +public class RouterRcvrFilterController {
  17 +
  18 + @Autowired
  19 + MessageRouterReciverFilterService messageRouterReciverFilterService;
  20 +
  21 + @PostMapping("/filter")
  22 + public ResultJson add(@RequestBody MessageRouterReciverFilter messageRouterReciverFilter){
  23 + int result=messageRouterReciverFilterService.addMessageRouterReciverFilter(messageRouterReciverFilter);
  24 + return result>0?new ResultJson("200","过滤规则新增成功"):new ResultJson("500","过滤规则新增失败");
  25 + }
  26 +
  27 + @GetMapping("/filter")
  28 + public ResultJson get(@RequestParam(value = "filter", required = false) String filter,
  29 + @RequestParam(value = "pageNum",required = false,defaultValue = "1") int pageNum,
  30 + @RequestParam(value = "pageSize",required = false,defaultValue = "10") int pageSize){
  31 + PageInfo<MessageRouterReciverFilter> list = messageRouterReciverFilterService.get(filter,pageNum,pageSize);
  32 + return new ResultJson<>("200","success",list);
  33 + }
  34 +}
@@ -15,6 +15,8 @@ public interface MessageRouterReciverFilterMapper { @@ -15,6 +15,8 @@ public interface MessageRouterReciverFilterMapper {
15 15
16 List<MessageRouterReciverFilter> selectByFilterKey(String id); 16 List<MessageRouterReciverFilter> selectByFilterKey(String id);
17 17
  18 + List<MessageRouterReciverFilter> selectAllByFilterKey(String record);
  19 +
18 int updateByPrimaryKeySelective(MessageRouterReciverFilter record); 20 int updateByPrimaryKeySelective(MessageRouterReciverFilter record);
19 21
20 int updateByPrimaryKey(MessageRouterReciverFilter record); 22 int updateByPrimaryKey(MessageRouterReciverFilter record);
@@ -16,7 +16,9 @@ public class MessageRouterReciver { @@ -16,7 +16,9 @@ public class MessageRouterReciver {
16 private Date creatTime; 16 private Date creatTime;
17 17
18 private Date updateTime; 18 private Date updateTime;
  19 +
19 private MessageRouterReciverFilter reciverFilter; 20 private MessageRouterReciverFilter reciverFilter;
  21 +
20 private List<MessageRouterReciverFilter> filterList; 22 private List<MessageRouterReciverFilter> filterList;
21 23
22 public String getId() { 24 public String getId() {
@@ -3,8 +3,9 @@ package com.sunyo.wlpt.message.bus.service.model; @@ -3,8 +3,9 @@ package com.sunyo.wlpt.message.bus.service.model;
3 import lombok.Data; 3 import lombok.Data;
4 4
5 import java.util.Date; 5 import java.util.Date;
  6 +
6 @Data 7 @Data
7 -public class MessageRouterReciverFilter { 8 +public class MessageRouterReciverFilter{
8 private String id; 9 private String id;
9 10
10 private String filter; 11 private String filter;
1 package com.sunyo.wlpt.message.bus.service.service; 1 package com.sunyo.wlpt.message.bus.service.service;
2 2
  3 +import com.github.pagehelper.PageInfo;
3 import com.sunyo.wlpt.message.bus.service.model.MessageRouterReciverFilter; 4 import com.sunyo.wlpt.message.bus.service.model.MessageRouterReciverFilter;
4 5
5 public interface MessageRouterReciverFilterService { 6 public interface MessageRouterReciverFilterService {
6 int addMessageRouterReciverFilter(MessageRouterReciverFilter messageRouterReciverFilter); 7 int addMessageRouterReciverFilter(MessageRouterReciverFilter messageRouterReciverFilter);
  8 + PageInfo<MessageRouterReciverFilter> get(String filter, int pageNum, int pageSize);
7 } 9 }
@@ -4,20 +4,81 @@ import com.github.pagehelper.PageHelper; @@ -4,20 +4,81 @@ import com.github.pagehelper.PageHelper;
4 import com.github.pagehelper.PageInfo; 4 import com.github.pagehelper.PageInfo;
5 import com.sunyo.wlpt.message.bus.service.mapper.MessageRouterMapper; 5 import com.sunyo.wlpt.message.bus.service.mapper.MessageRouterMapper;
6 import com.sunyo.wlpt.message.bus.service.model.MessageRouter; 6 import com.sunyo.wlpt.message.bus.service.model.MessageRouter;
  7 +import com.sunyo.wlpt.message.bus.service.model.MessageRouterReciver;
  8 +import com.sunyo.wlpt.message.bus.service.model.MessageRouterReciverFilter;
  9 +import com.sunyo.wlpt.message.bus.service.service.MessageRouterReciverFilterService;
  10 +import com.sunyo.wlpt.message.bus.service.service.MessageRouterReciverService;
7 import com.sunyo.wlpt.message.bus.service.service.MessageRouterService; 11 import com.sunyo.wlpt.message.bus.service.service.MessageRouterService;
  12 +import org.apache.commons.lang.StringUtils;
8 import org.springframework.beans.factory.annotation.Autowired; 13 import org.springframework.beans.factory.annotation.Autowired;
9 import org.springframework.stereotype.Service; 14 import org.springframework.stereotype.Service;
  15 +import org.springframework.transaction.annotation.Transactional;
10 16
  17 +import javax.annotation.Resource;
11 import java.util.List; 18 import java.util.List;
12 import java.util.UUID; 19 import java.util.UUID;
13 20
14 @Service 21 @Service
15 public class MessageRouterImpl implements MessageRouterService { 22 public class MessageRouterImpl implements MessageRouterService {
16 - @Autowired 23 +
  24 + @Resource
17 MessageRouterMapper messageRouterMapper; 25 MessageRouterMapper messageRouterMapper;
  26 +
  27 + @Autowired
  28 + MessageRouterReciverService messageRouterReciverService;
  29 +
  30 + @Autowired
  31 + MessageRouterReciverFilterService messageRouterReciverFilterService;
  32 +
  33 +
18 @Override 34 @Override
  35 + @Transactional(rollbackFor = Exception.class)
19 public int addRouter(MessageRouter messageRouter) throws Exception { 36 public int addRouter(MessageRouter messageRouter) throws Exception {
20 - return messageRouterMapper.insertSelective(messageRouter); 37 +
  38 + String routerid=UUID.randomUUID().toString();
  39 + String reciverid=UUID.randomUUID().toString();
  40 +
  41 + /**
  42 + * 先添加路由,在根据路由添加路由接收者
  43 + */
  44 + messageRouter.setId(routerid);
  45 + messageRouterMapper.insertSelective(messageRouter);
  46 +
  47 + /**
  48 + * 没有指定接收者只添加路由,单个增加接收者
  49 + */
  50 + if(messageRouter.getReciver()!=null && messageRouter.getReciver().getRcvrTopic()!=null && messageRouter.getReciver().getRcvrTopic()!=""){
  51 + MessageRouterReciver routerReciver=new MessageRouterReciver();
  52 + routerReciver.setId(reciverid);
  53 + routerReciver.setMessageRouterId(routerid);
  54 + routerReciver.setRcvrTopic(messageRouter.getReciver().getRcvrTopic());
  55 + messageRouterReciverService.addMessageRouterReciver(routerReciver);
  56 + if(messageRouter.getReciver().getReciverFilter()!=null && messageRouter.getReciver().getReciverFilter().getFilter()!=null&& messageRouter.getReciver().getReciverFilter().getFilter()!=""){
  57 + MessageRouterReciverFilter routerReciverFilter=new MessageRouterReciverFilter();
  58 + routerReciverFilter.setId(UUID.randomUUID().toString());
  59 + routerReciverFilter.setMessageRouterReciverId(reciverid);
  60 + routerReciverFilter.setFilter(messageRouter.getReciver().getReciverFilter().getFilter());
  61 + messageRouterReciverFilterService.addMessageRouterReciverFilter(routerReciverFilter);
  62 + }
  63 + }
  64 +
  65 + /**
  66 + * 一个路由增加多个接收者
  67 + */
  68 + if(messageRouter.getRcvrList()!=null && !messageRouter.getRcvrList().isEmpty()){
  69 + for (
  70 + MessageRouterReciver routerReciver:messageRouter.getRcvrList()
  71 + ) {
  72 + if (StringUtils.isNotBlank(routerReciver.getRcvrTopic())){
  73 + String batchAddRevrId =UUID.randomUUID().toString();
  74 + routerReciver.setId(batchAddRevrId);
  75 + routerReciver.setMessageRouterId(routerid);
  76 + messageRouterReciverService.addMessageRouterReciver(routerReciver);
  77 + }
  78 +
  79 + }
  80 + }
  81 + return 1;
21 } 82 }
22 83
23 @Override 84 @Override
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.github.pagehelper.PageHelper;
  4 +import com.github.pagehelper.PageInfo;
3 import com.sunyo.wlpt.message.bus.service.mapper.MessageRouterReciverFilterMapper; 5 import com.sunyo.wlpt.message.bus.service.mapper.MessageRouterReciverFilterMapper;
  6 +import com.sunyo.wlpt.message.bus.service.model.MessageRouter;
4 import com.sunyo.wlpt.message.bus.service.model.MessageRouterReciverFilter; 7 import com.sunyo.wlpt.message.bus.service.model.MessageRouterReciverFilter;
5 import com.sunyo.wlpt.message.bus.service.service.MessageRouterReciverFilterService; 8 import com.sunyo.wlpt.message.bus.service.service.MessageRouterReciverFilterService;
6 -import org.springframework.beans.factory.annotation.Autowired;  
7 import org.springframework.stereotype.Service; 9 import org.springframework.stereotype.Service;
8 10
  11 +import javax.annotation.Resource;
  12 +import java.util.List;
  13 +
9 @Service 14 @Service
10 public class MessageRouterReciverFilterImpl implements MessageRouterReciverFilterService { 15 public class MessageRouterReciverFilterImpl implements MessageRouterReciverFilterService {
11 - @Autowired 16 +
  17 + @Resource
12 MessageRouterReciverFilterMapper messageRouterReciverFilterMapper; 18 MessageRouterReciverFilterMapper messageRouterReciverFilterMapper;
13 19
14 @Override 20 @Override
15 public int addMessageRouterReciverFilter(MessageRouterReciverFilter messageRouterReciverFilter) { 21 public int addMessageRouterReciverFilter(MessageRouterReciverFilter messageRouterReciverFilter) {
16 return messageRouterReciverFilterMapper.insertSelective(messageRouterReciverFilter); 22 return messageRouterReciverFilterMapper.insertSelective(messageRouterReciverFilter);
17 } 23 }
  24 +
  25 + @Override
  26 + public PageInfo<MessageRouterReciverFilter> get(String filter,int pageNum, int pageSize) {
  27 + PageHelper.startPage(pageNum,pageSize);
  28 + List<MessageRouterReciverFilter> list=messageRouterReciverFilterMapper.selectAllByFilterKey(filter);
  29 + PageInfo<MessageRouterReciverFilter> result=new PageInfo<>(list);
  30 + return result;
  31 + }
18 } 32 }
@@ -14,6 +14,7 @@ import org.apache.kafka.clients.consumer.OffsetAndMetadata; @@ -14,6 +14,7 @@ import org.apache.kafka.clients.consumer.OffsetAndMetadata;
14 import org.apache.kafka.common.KafkaFuture; 14 import org.apache.kafka.common.KafkaFuture;
15 import org.apache.kafka.common.TopicPartition; 15 import org.apache.kafka.common.TopicPartition;
16 import org.apache.kafka.common.TopicPartitionReplica; 16 import org.apache.kafka.common.TopicPartitionReplica;
  17 +import org.springframework.beans.factory.annotation.Autowired;
17 import org.springframework.kafka.core.KafkaAdmin; 18 import org.springframework.kafka.core.KafkaAdmin;
18 import org.springframework.stereotype.Service; 19 import org.springframework.stereotype.Service;
19 import javax.annotation.Resource; 20 import javax.annotation.Resource;
@@ -31,9 +32,11 @@ public class KafkaServiceImp implements KafkaService { @@ -31,9 +32,11 @@ public class KafkaServiceImp implements KafkaService {
31 @Resource 32 @Resource
32 private BusServerMapper busServerMapper; 33 private BusServerMapper busServerMapper;
33 34
34 - private static AdminClient KAFKA_ADMIN_CLIENT ; 35 + @Autowired
  36 + private AdminClient KAFKA_ADMIN_CLIENT ;
35 37
36 - private static KafkaConsumer KAFKA_CONSUMER; 38 + @Autowired
  39 + private KafkaConsumer KAFKA_CONSUMER;
37 40
38 @Resource 41 @Resource
39 ConsumerGroupMapper consumerGroupMapper; 42 ConsumerGroupMapper consumerGroupMapper;
@@ -44,7 +47,7 @@ public class KafkaServiceImp implements KafkaService { @@ -44,7 +47,7 @@ public class KafkaServiceImp implements KafkaService {
44 @Override 47 @Override
45 public boolean addTopic(String TopicName,int partitionNum){ 48 public boolean addTopic(String TopicName,int partitionNum){
46 49
47 - intAdminClient(); 50 +// intAdminClient();
48 NewTopic newTopic = new NewTopic(TopicName, partitionNum, (short) 1); 51 NewTopic newTopic = new NewTopic(TopicName, partitionNum, (short) 1);
49 List<NewTopic> topicList = Arrays.asList(newTopic); 52 List<NewTopic> topicList = Arrays.asList(newTopic);
50 KAFKA_ADMIN_CLIENT.createTopics(topicList); 53 KAFKA_ADMIN_CLIENT.createTopics(topicList);
@@ -98,8 +101,8 @@ public class KafkaServiceImp implements KafkaService { @@ -98,8 +101,8 @@ public class KafkaServiceImp implements KafkaService {
98 public List<ConsumerGroupOffsets> queueMonitor() { 101 public List<ConsumerGroupOffsets> queueMonitor() {
99 List<ConsumerGroupOffsets> result = new ArrayList<ConsumerGroupOffsets>(); 102 List<ConsumerGroupOffsets> result = new ArrayList<ConsumerGroupOffsets>();
100 try{ 103 try{
101 - intAdminClient();  
102 - intConsumer(); 104 +// intAdminClient();
  105 +// intConsumer();
103 106
104 /** 107 /**
105 * 1. 获取consumerGroup 列表 108 * 1. 获取consumerGroup 列表
@@ -26,6 +26,17 @@ @@ -26,6 +26,17 @@
26 from message_router_reciver_filter 26 from message_router_reciver_filter
27 where message_router_reciver_id = #{messageRouterReciverId,jdbcType=VARCHAR} 27 where message_router_reciver_id = #{messageRouterReciverId,jdbcType=VARCHAR}
28 </select> 28 </select>
  29 +
  30 + <select id="selectAllByFilterKey" parameterType="java.lang.String" resultMap="BaseResultMap">
  31 + select
  32 + <include refid="Base_Column_List" />
  33 + from message_router_reciver_filter
  34 + <where>
  35 + <if test="filter!=null and filter!=''">
  36 + AND filter = #{filter,jdbcType=VARCHAR}
  37 + </if>
  38 + </where>
  39 + </select>
29 <delete id="deleteByPrimaryKey" parameterType="java.lang.String"> 40 <delete id="deleteByPrimaryKey" parameterType="java.lang.String">
30 delete from message_router_reciver_filter 41 delete from message_router_reciver_filter
31 where id = #{id,jdbcType=VARCHAR} 42 where id = #{id,jdbcType=VARCHAR}