- 浏览: 2096631 次
- 性别:
- 来自: 合肥
文章分类
- 全部博客 (196)
- groovy&grails (0)
- gis (3)
- Linux (12)
- spring (15)
- database (1)
- jquery (4)
- chrome (3)
- java基础 (1)
- java高级 (3)
- hibernate (1)
- hadoop (2)
- javascript OOP (1)
- spring4.0系列 (10)
- spring boot (4)
- spring-boot (13)
- PaaS (20)
- OpenSource (1)
- docker (13)
- 点睛Spring4.1 (20)
- 非技术 (4)
- fedora21 (5)
- golang (2)
- CloudStack (2)
- puppet (2)
- tools (2)
- apache mesos (5)
- 点睛Spring MVC 4.1 (10)
- Mac (1)
- Spring 4.2新特性 (4)
- work (1)
- news (7)
- postgresql (2)
- IntelliJ IDEA (1)
- XenServer (2)
- docker swarm Portainer (1)
- kargo (1)
- ansible (1)
- kubernetes (8)
- Spring Data JPA (3)
- spring cloud (3)
- Spring Data (2)
- Hibernate-Spatial (1)
- PostGIS (1)
- jsonb (1)
- minikube (1)
- geojson (1)
- geometry (1)
- spring mvc (1)
- kuberspay (1)
- kubespray (2)
- kubectl (2)
- spring securityhttps://www.youtube.com/watch?v=R8m48ARSTm4 (1)
- spark (1)
- cassandra (1)
- spark-cassandra-connector (1)
- Spring Security (1)
- spring batch (1)
- elaticsearch (1)
- kettle (1)
- data integration (1)
- Spring Data Jest (1)
- Elasticsearch (3)
- Spring boot 2.0 (2)
- OAUTH2 (1)
- SseEmitter (1)
- @EventListener (1)
- Spring Cloud Sleuth (1)
- Zipkin (1)
- Kafka (1)
- fluentd (1)
- kibana (1)
- 审计 (1)
- https://blog.csdn.net/wiselyman (1)
- k8s (2)
- Strimzi (1)
- Kafka Connect (1)
- debezium (1)
最新评论
-
lhs472194266:
我在搜索是,面临一个问题,是用maven 将第三方jar包的s ...
如何在IntelliJ IDEA中检索maven依赖jar包的源码 -
淡炒番茄:
博主,你这个认证服务器是个单应用,作微服务、我要用几个认证服务 ...
Spring Cloud下基于OAUTH2认证授权的实现 -
lianghuado:
Spring4.0系列9-websocket简单应用 -
yangjianzhouctgu:
汪老师,你好,我想就spring boot测试方面的问题请教一 ...
Spring Boot使用自定义的properties -
dyj025:
wiselyman 写道dyj025 写道楼主源码访问不了.可 ...
Spring Cloud下基于OAUTH2认证授权的实现
需求为:当客户已有系统的数据被同步到我方数据库后,若再有新数据,只同步新数据到我方数据库。
解决:因为客户的业务表是不能变动的,我方在客户数据库中新建一状态表,记录哪些数据被更新过。
当客户业务表有新数据插入时,用触发器将新数据id插入到状态表。
为方便实例:业务表pp,状态表status
结构为:
pp:
CREATE TABLE `pp` (
`name` varchar(255) default NULL,
`address` varchar(255) default NULL,
`id` int(11) NOT NULL auto_increment,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;
status:
CREATE TABLE `status` (
`id` int(11) NOT NULL auto_increment,
`status` varchar(255) default 'new',
`ppid` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8;
触发器:
DROP TRIGGER if EXISTS mytrigger
CREATE TRIGGER mytrigger after INSERT on pp
for EACH ROW
BEGIN
INSERT into `status`(ppid) values(new.id);
END;
核心配置:jdbc-inbound-context.xml
<?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" xmlns:int="http://www.springframework.org/schema/integration" xmlns:int-jdbc="http://www.springframework.org/schema/integration/jdbc" xmlns:int-jms="http://www.springframework.org/schema/integration/jms" xmlns:jdbc="http://www.springframework.org/schema/jdbc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/integration http://www.springframework.org/schema/integration/spring-integration-2.0.xsd http://www.springframework.org/schema/integration/jdbc http://www.springframework.org/schema/integration/jdbc/spring-integration-jdbc-2.0.xsd http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd http://www.springframework.org/schema/integration/jms http://www.springframework.org/schema/integration/jms/spring-integration-jms-2.0.xsd"> <context:component-scan base-package="com.wisely.inbound"/> <int:channel id="target"/> <int-jdbc:inbound-channel-adapter channel="target" data-source="dataSource" query="select p.id as ppid,p.name as ppname from pp p,status s where p.id=s.ppid and s.status='new'" update="update status as st set st.status='old' where ppid in (:ppid)" > <!-- 每隔多少毫秒去抓取 --> <int:poller fixed-rate="5000" > <int:transactional/> </int:poller> <!-- 指定时刻抓取 <int:poller max-messages-per-poll="1"> <int:transactional/> <int:cron-trigger expression="0 0 3 * * ?"/> </int:poller> --> </int-jdbc:inbound-channel-adapter> <int:service-activator input-channel="target" ref="jdbcMessageHandler"/> <context:property-placeholder location="classpath*:META-INF/spring/*.properties"/> <bean class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close" id="dataSource"> <property name="driverClassName" value="${database.driverClassName}"/> <property name="url" value="${database.url}"/> <property name="username" value="${database.username}"/> <property name="password" value="${database.password}"/> </bean> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"/> </bean> </beans>
JdbcMessageHandler:
package com.wisely.inbound.jdbc; import java.util.List; import java.util.Map; import org.springframework.integration.annotation.ServiceActivator; import org.springframework.stereotype.Component; @Component public class JdbcMessageHandler { @ServiceActivator public void handleJdbcMessage(List<Map<String ,Object>> message){ for(Map<String,Object> resultMap:message){ System.out.println("组:"); for(String column:resultMap.keySet()){ System.out.println("字段:"+column+" 值:"+resultMap.get(column)); } } } }
测试类:
package com.wisely.inbound.jdbc; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class JdbcInbound { /** * @param args */ public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext("/META-INF/spring/jdbc-inbound-context.xml"); } }
若将channel改为jms的通道。配置文件做以下修改:
<?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" xmlns:int="http://www.springframework.org/schema/integration" xmlns:int-jdbc="http://www.springframework.org/schema/integration/jdbc" xmlns:int-jms="http://www.springframework.org/schema/integration/jms" xmlns:jdbc="http://www.springframework.org/schema/jdbc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/integration http://www.springframework.org/schema/integration/spring-integration-2.0.xsd http://www.springframework.org/schema/integration/jdbc http://www.springframework.org/schema/integration/jdbc/spring-integration-jdbc-2.0.xsd http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd http://www.springframework.org/schema/integration/jms http://www.springframework.org/schema/integration/jms/spring-integration-jms-2.0.xsd"> <context:component-scan base-package="com.wisely.inbound"/> <int-jms:channel id="target" queue-name="jdbc.queue" connection-factory="connectionFactory"/> <int-jdbc:inbound-channel-adapter channel="target" data-source="dataSource" query="select p.id as ppid,p.name as ppname from pp p,status s where p.id=s.ppid and s.status='new'" update="update status as st set st.status='old' where ppid in (:ppid)" > <!-- 每隔多少毫秒去抓取 --> <int:poller fixed-rate="5000" > <int:transactional/> </int:poller> <!-- 指定时刻抓取 <int:poller max-messages-per-poll="1"> <int:transactional/> <int:cron-trigger expression="0 0 3 * * ?"/> </int:poller> --> </int-jdbc:inbound-channel-adapter> <!-- <int-jms:message-driven-channel-adapter id="queInbound" destination-name="jmsQueue" channel="target"/> --> <int:service-activator input-channel="target" ref="jdbcMessageHandler"/> <context:property-placeholder location="classpath*:META-INF/spring/*.properties"/> <bean class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close" id="dataSource"> <property name="driverClassName" value="${database.driverClassName}"/> <property name="url" value="${database.url}"/> <property name="username" value="${database.username}"/> <property name="password" value="${database.password}"/> </bean> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"/> </bean> <bean id="activeMqConnectionFactory" class="org.apache.activemq.spring.ActiveMQConnectionFactory"> <property name="brokerURL" value="vm://localhost" /> </bean> <bean id="connectionFactory" class="org.springframework.jms.connection.CachingConnectionFactory"> <property name="sessionCacheSize" value="10" /> <property name="cacheProducers" value="false"/> <property name="targetConnectionFactory" ref="activeMqConnectionFactory"/> </bean> <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate"> <property name="connectionFactory" ref="connectionFactory"/> <property name="defaultDestinationName" value="jmsQueue" /> </bean> </beans>
- jdbc-inbound.rar (1.5 MB)
- 下载次数: 119
- jdbc-inbound-jms.rar (1.5 MB)
- 下载次数: 91
发表评论
-
发现目前市面上唯一一本关于Spring 4的新书的下载地址
2014-10-29 08:56 4036magnet:?xt=urn:btih:76D615947 ... -
Spring Boot + Spring-loaded 热部署
2014-10-22 15:01 10039spring boot大大加快了目前使用sp ... -
Spring Tool Suite(STS)加速
2014-10-22 14:40 8597Java开发首选技术是Spring,使用Sp ... -
spring 学习3-Spring AOP
2013-09-21 21:42 2062Using @AspectJ-Style Annotati ... -
spring 学习2-Spring Configuration in detail
2013-09-21 20:53 38841.Bean Life-Cycle Management ... -
spring 学习1
2013-09-21 19:55 17861. Spring is lightweight= min ... -
Easy Integration Testing with Spring+Hibernate
2012-12-03 08:58 1512原文地址:http://architects.dzone.c ... -
Spring Shell 1.0 M1 发布
2012-07-19 08:58 2491亲爱的spring社区, 我很高兴的发布了S ... -
SpringSource Tool Suite 3.0.0.M1 发布
2012-05-04 15:37 2531亲爱的Spring社区, 我很高兴发布Spring ... -
SpringSource Tool Suite 2.8.0.M1 发布
2011-08-12 11:15 2140亲爱的spring社区, 我很高兴的发布下一个STS版本 ... -
SpringSource Tool Suite 2.7.0 发布
2011-07-07 12:00 2399亲爱的Spring社区, 我们很高兴的发布最新的2.7. ... -
SpringSource Tool Suite 2.7.0.M2 发布
2011-06-14 08:41 1810亲爱的Spring社区, 我很高兴发布SpringSourc ... -
SpringSource Tool Suite 2.5.2 发布
2011-01-12 10:26 3110亲爱的spring社区: 我 ... -
Spring Web Services 2.0.0.RC2 发布
2010-12-24 11:03 1730亲爱Spring 社区, 我们很高兴发布Spri ...
相关推荐
Spring Integration 是一个基于 Spring 框架的轻量级企业级集成库,它提供了一种声明式的方法来处理系统间的消息传递和数据流。这个"spring integration master"压缩包文件很可能是包含了一系列示例,帮助开发者更好...
Spring Integration 是 Spring 框架的一个扩展,旨在提供轻量级、企业级的集成解决方案,它简化了应用程序之间的数据传输,支持多种协议和消息传递模式。在本文中,我们将深入探讨 Spring Integration 2.0.3 版本的...
Spring Integration 提供了多种适配器,使得与外部系统(如数据库、文件系统、邮件服务器等)的交互变得简单易行。 **Spring Integration 的新增功能** 1. **通道增强** 新版本可能增加了对不同类型通道的支持,...
2. **连接器(Adapters)**:连接器是Spring Integration与外部系统交互的桥梁,比如文件系统、数据库、HTTP服务器、JMS队列等。它们将Spring Integration的内部消息模型转换为特定系统的协议和格式。 3. **消息...
- **集成模式**:本书介绍了标准的集成模式,如消息传递、文件传输、数据库同步等,这些模式在构建集成系统时非常有用。 - **企业级挑战**:讨论了企业在进行集成时面临的常见挑战,例如异构系统之间的兼容性问题、...
Spring Integration是Spring框架的一个扩展,旨在提供一个简单、声明式的机制来处理应用之间的集成问题,如数据传输、消息处理等。它支持多种集成模式,如文件系统、数据库、HTTP、JMS、FTP、SMTP等。 下面我们将...
通过提供一系列预定义的连接器,Spring Integration使得开发者能够轻松地实现不同系统间的交互,例如文件系统、消息队列、数据库以及HTTP服务等。 在"spring-int-rest"项目中,我们看到的是一个基于Spring Boot的...
Spring Batch提供了多种内置的ItemReader和ItemWriter实现,支持从数据库、文件等多种数据源读取数据,以及将数据写入到数据库、文件等目的地。 知识点五:数据处理 在数据被读取之后,通常需要经过一定的处理才能...
通道是 Spring Integration 中的数据传输途径,它们负责在不同的组件之间传递消息。标准输入通道适配器用于接收来自外部系统的数据,而标准输出通道适配器则负责将数据发送到目标系统。这种设计模式使得系统能够灵活...
Spring框架由多个模块组成,如Core Container(核心容器)、Data Access/Integration(数据访问/集成)、Web、AOP(面向切面编程)、Test等。每个模块都有相应的jar包,例如`spring-context.jar`提供了上下文支持,`...
此外,它还可以用于系统之间的数据同步,如数据库同步、文件系统与Web服务之间的数据迁移等。另外,对于物联网(IoT)应用,Spring Integration的扩展组件可以处理传感器数据的接收和处理,实现设备与云端的无缝连接。...
Infinispan通过JDBC Cache Store插件,支持多种数据库,如MySQL、Oracle等,用户可以自定义数据存储策略,比如批处理、同步异步模式等。 在配置Infinispan的JDBC Cache Store时,我们需要设置数据源、表结构以及...
在处理Blob数据时,可以使用其提供的`BlobHandler`和`BlobStore`接口来实现文件系统、云存储服务(如Amazon S3或Google Cloud Storage)与数据库之间的数据同步。 6. **持久化策略**: 对于Blob数据的持久化,有直接...
9. **Spring Integration**: 集成外部系统,提供消息驱动的编程模型。 **学习路径** 1. 先掌握Java基础,理解面向对象编程思想。 2. 学习Spring核心模块,如DI和AOP,通过实际项目练习。 3. 探索Spring Boot和...
1. **模块化设计**:Spring Framework 5.3.0 仍然保持其模块化的结构,包括核心容器(Core Container)、数据访问/集成(Data Access/Integration)、Web、AOP(面向切面编程)和测试模块等。这使得开发者可以根据...
通过这个示例可以了解如何配置Spring Batch来实现数据导入任务,包括配置`ItemReader`读取CSV文件中的数据,配置`ItemWriter`将数据写入MySQL数据库。 #### 七、Spring Batch 3.0新特性 1. **JSR-352支持**:增加...