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、微服务、分布式、电子商务
核心思想:产品微服务、模块化、原子化、持续集成、分布式、集群部署
开发模式:代码生成工具、驱动式开发模式、提高开发效率
相关推荐
基于Spring+SpringMVC+Mybatis分布式敏捷开发系统架构,提供整套公共微服务服务模块:集中权限管理(单点登录)、内容管理、支付中心、用户管理(支持第三方登录)、微信平台、存储系统、配置中心、日志分析、任务和...
Java基于Spring+SpringMVC+MyBatis实现的学生信息管理系统源码,SSM+Vue的学生管理系统。 Java基于Spring+SpringMVC+MyBatis实现的学生信息管理系统源码,SSM+Vue的学生管理系统。 Java基于Spring+SpringMVC+...
本源码提供了一个基于Spring+SpringMVC+Mybatis的分布式框架设计。项目包含1990个文件,其中包括551个Java源文件、294个PNG图片、253个GIF图片、217个CSS样式文件、193个JavaScript文件、170个XML文件、89个HTML文件...
完善的Spring+SpringMVC+Mybatis+easyUI后台管理系统(RESTful API+redis).zip 完善的Spring+SpringMVC+Mybatis+easyUI后台管理系统(RESTful API+redis).zip 完善的Spring+SpringMVC+Mybatis+easyUI后台管理系统...
基于Spring+SpringMVC+Mybatis架构的博客系统:博客管理、图表数据、日志分析、访问记录、图库管理、资源管理、友链通知等。良好的页面预加载,无限滚动加载,文章置顶,博主推荐等。提供 用户端+管理端 的整套系统...
基于Spring+SpringMVC+Mybatis分布式敏捷开发系统架构,提供整套公共微服务服务模块:集中权限管理(单点登录)、内容管理、支付中心、用户管理(支持第三方登录)、微信平台、存储.zip基于Spring+SpringMVC+Mybatis...
Spring+SpringMVC+Hibernate+maven项目,适用初学者学习。
SSM框架——详细整合教程(Spring+SpringMVC+MyBatis).pdfSSM框架——详细整合教程(Spring+SpringMVC+MyBatis).pdf
基于Spring+SpringMVC+Mybaits的小区停车场车牌识别系统 基于Spring+SpringMVC+Mybaits的小区停车场车牌识别系统 基于Spring+SpringMVC+Mybaits的小区停车场车牌识别系统 基于Spring+SpringMVC+Mybaits的小区停车场...
酒店管理系统源码(spring+springmvc+mybatis) 酒店管理系统源码(spring+springmvc+mybatis) 酒店管理系统源码(spring+springmvc+mybatis) 酒店管理系统源码(spring+springmvc+mybatis) 酒店管理系统...
基于Spring + SpringMvc + MyBatis搭建的学生信息管理系统 基于Spring + SpringMvc + MyBatis搭建的学生信息管理系统 基于Spring + SpringMvc + MyBatis搭建的学生信息管理系统 基于Spring + SpringMvc + MyBatis...
使用mybatis+spring+springMVC+maven+dubbo搭建的一个消费者与提供者的项目
Spring+SpringMVC+Mybatis框架整合例子——亲测可用.zip
基于 SpringBoot + Spring + SpringMvc + Mybatis + Shiro+ Redis 开发单点登录管理系统 基于 SpringBoot + Spring + SpringMvc + Mybatis + Shiro+ Redis 开发单点登录管理系统 基于 SpringBoot + Spring + ...
使用intellij idea搭建MAVEN+SSM(Spring+SpringMVC+MyBat.
Spring+SpringMvc+Mybatis学生管理系统,含登录,数据库。
Spring+SpringMVC+Mybatis+Maven+bootstrap+ajax+jQuery整合开发简单的员工后台管理系统,免责声明,朋友分享,切勿商用
Spring+SpringMVC+Mybatis+Velocity+Maven整合
Spring+SpringMVC+MyBatis+Shiro+MySQL+Redis+Maven+EasyUI+Bootstrap实现的通用权限管理系统。 Spring+SpringMVC+MyBatis+Shiro+MySQL+Redis+Maven+EasyUI+Bootstrap实现的通用权限管理系统 Spring+SpringMVC+...
spring+springmvc+mybatis搭建的一个酒店管理系统附带mysql数据库 spring+springmvc+mybatis搭建的一个酒店管理系统附带mysql数据库