Kafka和Spring集成实践

本文详述了在CentOS 6.4环境下,如何集成Kafka与Spring。内容包括Zookeeper和Kafka的安装,创建Spring项目,使用Kafka的Producer API发送消息,High Level API接收消息,以及通过spring-integration-kafka发送和接收消息的配置和代码示例。
摘要由CSDN通过智能技术生成

目录


  1. 安装Zookeeper
  2. 安装Kafka
  3. 创建一个Spring项目
  4. 使用Producer API发送消息到Kafka
  5. 使用Kafka High Level API接收消息
  6. 使用spring-integration-kafka发送消息
  7. 使用spring-integration-kafka接收消息

    本文以单机的环境演示如何将Kafka和Spring集成。
    单机的环境最容易搭建, 并且只需在自己的PC上运行即可, 不需要很多的硬件环境,便于学习。 况且,本文的目的不是搭建ZooKeeper的集群环境, 而是重点介绍Kafka和Spring的应用。
    具体的软件环境如下:

OS: CentOS 6.4
Zookepper: zookeeper-3.4.6
Kafka: kafka_2.9.1-0.8.2-beta
Java: JDK 1.7.0_45-b18
Spring:4.0.6
本例子在我的这个环境中运行正常, 全部代码可以到 github 下载。

本文所有的操作系统用户都是root。 实际产品中可能安全标准需要特定的用户如zookeeper, kafka等。

安装Zookeeper


首先下载解压zookeeper,选择合适的镜像站点以加快下载速度。
我们可以将zookeeper加到系统服务中, 增加一个/etc/init.d/zookeeper文件。

cd /opt
wget  http://apache.fayea.com/apache-mirror/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz
tar zxvf zookeeper-3.4.6.tar.gz
vi /etc/init.d/zookeeper

https://raw.githubusercontent.com/apache/zookeeper/trunk/src/packages/rpm/init.d/zookeeper文件的内容拷贝到这个文件,修改其中的运行zookeeper的用户以及zookeeper的文件夹位置。

......
start() {
  echo -n $"Starting $desc (zookeeper): "
  daemon --user root /opt/zookeeper-3.4.6/zkServer.sh start
  RETVAL=$?
  echo
  [ $RETVAL -eq 0 ] && touch /var/lock/subsys/zookeeper
  return $RETVAL
}
stop() {
  echo -n $"Stopping $desc (zookeeper): "
  daemon --user root /opt/zookeeper-3.4.6/zkServer.sh stop
  RETVAL=$?
  sleep 5
  echo
  [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/zookeeper $PIDFILE
}
......
chmod 755 /etc/init.d/zookeeper
service zookeeper start

如果你不想加到服务,也可以直接运行zookeeper。

/opt/zookeeper-3.4.6/zkServer.sh start

安装Kafka


从合适的镜像站点下载最新的kafka并解压。
wget http://apache.01link.hk/kafka/0.8.2-beta/kafka_2.9.1-0.8.2-beta.tgz
tar zxvf kafka_2.9.1-0.8.2-beta.tgz
cd kafka_2.9.1-0.8.2-beta
启动Kafka:
bin/kafka-server-start.sh config/server.properties
创建一个test的topic:
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
可以利用kafka的命令启动一个生产者和消费者试验一下:
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
This is a message
This is another message
bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning
This is a message
This is another message

更多的介绍可以查看我翻译整理的 Kafka快速入门

创建一个Spring项目


以上的准备环境完成,让我们开始创建一个项目。
以前我写过一篇简单介绍: Spring 集成 Kafka.
spring-integration-kafka这个官方框架我就不介绍了。 我们主要使用它做集成。

首先我们先看一下使用Kafka自己的Producer/Consumer API发送/接收消息的例子。

使用Producer API发送消息到Kafka

OK,现在我们先看一个使用Kafka 自己的producer API发送消息的例子:

public class NativeProducer {
    public static void main(String[] args) {
        String topic= "test";
        long events = 100;
        Random rand = new Random();

        Properties props = new Properties();
        props.put("metadata.broker.list", "localhost:9092");
        props.put("serializer.class", "kafka.serializer.StringEncoder");
        props.put("request.required.acks", "1");

        ProducerConfig config = new ProducerConfig(props);

        Producer<String, String> producer = new Producer<String, String>(config);

        for (long nEvents = 0; nEvents < events; nEvents++) {                
               String msg = "NativeMessage-" + rand.nextInt() ; 
               KeyedMessage<String, String> data = new KeyedMessage<String, String>(topic, nEvents + "", msg);
               producer.send(data);
        }
        producer.close();
    }
}

这个例子中首先初始化Producer对象,指定相应的broker和serializer, 然后发送100个字符串消息给Kafka。

运行mvn package编译代码,执行查看结果:


                
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT布道者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值