Honghu的消息服务平台已经抛弃了之前的ActiveMQ,改用高吞吐量比较大的Kafka分布式消息中间件方案:
kafka消息平台使用spring+kafka的集成方案,详情如下:
1. 使用最高版本2.1.0.RELEASE集成jar包:spring-integration-kafka
(企业架构源码可以加求球:三五三六二四七二五九)
2. Zookeeper、Kafka分布式集群使用init.properties配置化方案。
kafka.servers=127.0.0.1:9092 kafka.topic=xxxooo
3. 使用消息生产者spring-context-producer配置化方案。
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!-- 定义producer的参数 --> <bean id="producerProperties" class="java.util.HashMap"> <constructor-arg> <map> <entry key="bootstrap.servers" value="localhost:9092" /> <entry key="group.id" value="2" /> <entry key="retries" value="10" /> <entry key="batch.size" value="16384" /> <entry key="linger.ms" value="1" /> <entry key="buffer.memory" value="33554432" /> <entry key="key.serializer" value="org.apache.kafka.common.serialization.IntegerSerializer" /> <entry key="value.serializer" value="org.apache.kafka.common.serialization.StringSerializer" /> </map> </constructor-arg> </bean> <!-- 创建kafkatemplate需要使用的producerfactory bean --> <bean id="producerFactory" class="org.springframework.kafka.core.DefaultKafkaProducerFactory"> <constructor-arg> <ref bean="producerProperties" /> </constructor-arg> </bean> <!-- 创建kafkatemplate bean,使用的时候,只需要注入这个bean,即可使用template的send消息方法 --> <bean id="KafkaTemplate" class="org.springframework.kafka.core.KafkaTemplate"> <constructor-arg ref="producerFactory" /> <constructor-arg name="autoFlush" value="true" /> <property name="defaultTopic" value="test" /> </bean> </beans>
4. 使用消息消费者spring-context-producer配置化方案。
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!-- 定义consumer的参数 --> <bean id="consumerProperties" class="java.util.HashMap"> <constructor-arg> <map> <entry key="bootstrap.servers" value="localhost:9092" /> <entry key="group.id" value="0" /> <entry key="enable.auto.commit" value="true" /> <entry key="auto.commit.interval.ms" value="1000" /> <entry key="session.timeout.ms" value="15000" /> <entry key="key.deserializer" value="org.apache.kafka.common.serialization.IntegerDeserializer" /> <entry key="value.deserializer" value="org.apache.kafka.common.serialization.StringDeserializer" /> </map> </constructor-arg> </bean> <!-- 创建consumerFactory bean --> <bean id="consumerFactory" class="org.springframework.kafka.core.DefaultKafkaConsumerFactory"> <constructor-arg> <ref bean="consumerProperties" /> </constructor-arg> </bean> <!-- 实际执行消息消费的类 --> <bean id="messageListernerConsumerService" class="com.sml.sz.kafka.KafKaConsumer" /> <!-- 消费者容器配置信息 --> <bean id="containerProperties" class="org.springframework.kafka.listener.config.ContainerProperties"> <constructor-arg value="test" /> <property name="messageListener" ref="messageListernerConsumerService" /> </bean> <!-- 创建kafkatemplate bean,使用的时候,只需要注入这个bean,即可使用template的send消息方法 --> <bean id="messageListenerContainer" class="org.springframework.kafka.listener.KafkaMessageListenerContainer" init-method="doStart"> <constructor-arg ref="consumerFactory" /> <constructor-arg ref="containerProperties" /> </bean> </beans>
5. 使用注解方式注入消息类型
@Autowired
private KafkaTemplate<xxx, ooo> kafkaTemplate;
6. 重写MessageListener 的getMessage方法获取消息(业务实现)
7. RestFul服务方式测试消息服务
@CrossOrigin(origins = "*", maxAge = 3600, methods = { RequestMethod.GET, RequestMethod.POST, RequestMethod.DELETE, RequestMethod.PUT }) @RestController @RequestMapping(value = "/rest/kafka") public class KafKaProducer { @RequestMapping(value = "/send", method = RequestMethod.GET) public JSONObject save() { System.out.println("+++++++++++++++++++++++++++++++"); kafkaTemplate.sendDefault("HongHu KAFKA分布式消息服务测试"); return null; } @Autowired private KafkaTemplate<Integer, String> kafkaTemplate; }
@RestController public class KafKaConsumer implements MessageListener<Integer, String> { @Autowired private LogService logService; public void onMessage(ConsumerRecord<Integer, String> records) { System.out.println("====================" + records); Object o = records.value(); Log log = new Log(); log.setIsNewRecord(true); log.setId(IdGen.uuid()); log.setTitle(String.valueOf(o)); logService.save(log); } }接受消息了------------------:ConsumerRecord(topic = xxxooo, partition = 0, offset = 2489, CreateTime = 1479647648299, checksum = 3372898135, serialized key size = -1, serialized value size = 40, key = null, value = HongHu KAFKA分布式消息服务测试)
到此结束!
核心架构:Spring Cloud、Spring Boot、Mybatis、Redis、Rabbit MQ、微服务、分布式、电子商务
核心思想:产品微服务、模块化、原子化、持续集成、分布式、集群部署
开发模式:代码生成工具、驱动式开发模式、提高开发效率
相关推荐
Kafka是由LinkedIn开发并贡献给Apache的分布式流处理平台,它作为消息队列,可以高效地处理大量实时数据。Kafka具有高吞吐量、低延迟和容错性等特性,广泛应用于日志收集、网站活动跟踪、流式数据处理等领域。Spring...
本文将详细讲解如何在Spring Boot项目中集成Kafka,实现消息的发送与接收。 首先,我们需要在Spring Boot项目的`pom.xml`文件中添加Kafka相关的依赖。Spring for Apache Kafka提供了与Spring Boot整合的便利,通过...
在Spring Cloud框架中,整合RabbitMQ或Kafka作为消息驱动是常见的微服务间通信方式。这两种技术都是流行的消息中间件,用于实现异步处理、解耦和扩展性。下面将详细阐述它们在Spring Cloud中的应用。 首先,...
spring-kafka是Spring框架对Apache Kafka消息系统进行整合的一个项目,它简化了Kafka的使用,使其更容易与Spring应用程序集成。Apache Kafka是一个分布式流处理平台,主要用于构建实时数据管道和流应用程序。它具备...
Kafka还支持多语言客户端,如Java、Python、C++等,使得不同语言的应用程序都能轻松地与Kafka集成。此外,Kafka Connect允许你方便地将数据导入导出到其他数据存储,如Hadoop、Elasticsearch等。 在实际应用中,...
综上所述,`kafkaTest1`项目展示了Spring Boot基础的Kafka集成,而`kafkaTest`项目则利用了`spring-integration-kafka`插件来实现更灵活的消息处理。这两个项目都为开发者提供了一种便捷的方式,将Kafka集成到Spring...
要将Kafka与Spring集成,需要使用Spring的消息处理机制。在Spring中,可以使用@KafkaListener注解来监听Kafka主题,并将消息处理委托给Spring的消息处理器。 实例代码 本文提供了一个完整的实例代码,演示如何将...
在Spring Boot中,我们可以通过`@KafkaListener`注解监听特定的Kafka主题,或者使用`KafkaTemplate`发送消息。Kafka的高吞吐量和分布式特性使其成为处理大规模实时数据的理想选择。 Redis作为内存数据结构存储系统...
在本文中,我们将深入探讨如何将Spring框架与Apache Kafka集成,以便实现在Spring应用中发送和接收消息。Kafka是一个高吞吐量、分布式的发布/订阅消息系统,而Spring框架是Java开发中最广泛使用的应用框架之一。通过...
综上所述,SSM项目是一个集成了多种成熟技术的销售系统解决方案,它充分利用了Spring的灵活性、Mybatis的数据处理能力、Dubbo的分布式服务特性、Kafka的消息传输优势以及Redis的高速缓存功能。这样的设计确保了系统...
Kafka3.0是一个在分布式系统中广泛使用...通过以上知识点的详细介绍,可以看出Kafka3.0不仅是一个强大的消息队列系统,还提供了丰富的配置与集成方案,以及灵活的集群搭建策略,可以有效地满足不同类型企业应用的需求。
Spring Cloud 是一个全面的微服务解决方案,它集成了多种开源工具和服务,以帮助开发者快速创建、部署和管理分布式系统。本项目"spring-cloud-learning:Springcloud + rabbitmq + kafka + slueth + zipkin + lcn + ...
综上所述,这个名为`kafkaDemo`的项目实现了Spring Boot与Kafka的集成,能够轻松地发布和订阅消息,同时也支持动态修改Kafka配置和适应不同JDK版本,是构建分布式系统中的理想组件。通过理解和实践这个项目,开发者...
总结来说,Spring Boot与Apache Kafka的集成使得在微服务架构中实现消息传递变得简单而高效。通过`spring-boot-starter-data-kafka`起步依赖,我们可以快速创建生产者和消费者,利用Spring的注解驱动特性简化编程...
- 使用 Spring Cloud Stream 集成 Kafka 需要在配置中指定消息代理类型(Binder),例如 `spring.cloud.stream.kafka.bindings`。 - 应用程序可以通过 ChannelProducers 和 ChannelConsumers 来创建输入和输出通道...
在`springboot-kafka`目录下,可能包含了一个示例项目,你可以通过导入IDE进行编译和运行,以了解Spring Boot与Kafka集成的实践操作。 通过以上步骤,你已经掌握了如何在Spring Boot 2.7.3中集成Apache Kafka的基本...
Spring Kafka是Spring框架的一部分,专为集成Apache Kafka而设计,提供了一套轻量级且强大的API,使得在Java应用中使用Kafka变得更加简单。本文将围绕Spring Kafka的源代码进行深度解析,帮助开发者更好地理解和运用...
在Spring Boot应用中,我们可以利用Spring Kafka框架来与Apache Kafka进行集成,实现高效的消息传递。本文将详细探讨如何在Spring Boot项目中基于Spring Kafka动态创建Kafka消费者。 首先,了解Kafka基本概念:...
**SpringMVC与Kafka集成** 在SpringMVC中集成Kafka,可以实现生产者和消费者的创建,从而实现实时消息分发。以下是一些关键知识点: 1. **配置Kafka连接** 在SpringMVC应用中,我们需要配置Kafka的连接信息,包括...