Spring Cloud 2 使用 starter-stream-kafka


spring-cloud-starter-stream-kafka 2.X的配置很少有被讲到,但这又是springcloud架构中很重要的一块,这里做一下介绍使用,抛砖引玉。

关于新的配置项可以查询m2文件夹下的路劲:
.m2\repository\org\springframework\boot\spring-boot-autoconfigure\2.1.3.RELEASE\spring-boot-autoconfigure-2.1.3.RELEASE.jar!\META-INF\spring-configuration-metadata.json

该文件有全面的spring cloud 2配置

项目中的yml配置简单点只需要

spring:
  application:
    name: spring-producer
  kafka:
    bootstrap-servers: zhy.cauchy8389.com:9092

可以见一个service 用作sender

public interface SendService {

   @Output("myInput")
   SubscribableChannel sendOrder();
}

然后在controller里面就可以这么使用

@Autowired
SendService sendService;


@RequestMapping(value = "/send", method = RequestMethod.GET)
@ResponseBody
public String sendRequest() {
   // 创建消息
   Message msg = MessageBuilder.withPayload("Hello World".getBytes()).build();
   // 发送消息    
   sendService.sendOrder().send(msg);
   return "SUCCESS";
}

至于linux中kafka的启动命令:

kafka-topics.sh --create --zookeeper zhy.cauchy8389.com:2181/kafka --replication-factor 1 --partitions 2 --topic myInput 

这里解释下partitions 里面的数字就是届时分发的次数,也就是consumer接收的次数(一个consumer groupid接受的次数)

见一个consumer:

@SpringBootApplication
@EnableBinding(value = {ReceiveService.class})
public class ReceiverApplication {
   
   public static void main(String[] args) {
      new SpringApplicationBuilder(ReceiverApplication.class).
            properties("spring.config.location=classpath:/springcloud/stream-consumer.yml").run(args);
   }

   @StreamListener("myInput")
   public void receive(byte[] msg) {
      System.out.println("接收到的消息:  " + new String(msg));
   }
   
}

配置yml文件里面配上:

spring:
  application:
    name: spring-consumer
  kafka:
        bootstrap-servers: zhy.cauchy8389.com:9092
        consumer:
          group-id: group1

可以建立多个consumer project 也可以用同一个group-id ,然后之前partitions配置为2 那也就是比如这个group1 我启动多个

那么只有2个group1的实例会接收到队列消息。

好了,有什么问题,请留言咨询

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值