我是 Spring 的初学者,我必须为学校做一个项目。我可以做什么样的项目,我可以使用 Spring Batch 和 Integration。我知道我可以将文件写入目录,写入、读取和修改逗号分隔的文件,但我无法想象可以结合这些技术的场景。
4 回答
我自己不是 Spring 或 Spring Batch 或 Spring Integration 方面的专家,但我可以告诉你一个实际任务,我必须在我的组织中完成使用所有这些来满足需求。
我的公司在客户注册时从他们那里拿走信用卡,每 30 天向他们收费一次。因此,我们每天都必须查看谁在第 30 天,并通过向他们收费来自动更新我们的服务。因此,我必须每天将数据发送到银行。
步骤: 1我必须编写一个程序,通过批处理程序从我们的安全数据库中获取当天到期的客户信用卡详细信息,并将该内容以银行希望的特定格式写入我们公司服务器中的临时位置作为“.txt”文件(例如:/user/someuser/endofdaytransaction/dd-mm-yyyy.txt)
步骤: 2一旦此目录(/user/oneworld/endofdaytransaction/)中的内容(dd-mm-yyyy.txt)可用,我必须连接到银行的 SFTP 服务器并将文件传输到银行的目录提供给我们。
我在步骤 1 中使用 Spring Batch,批处理作业每天下午 5 点通过 Quartz 调度程序触发,在步骤 2 中使用 Spring Integration 来继续轮询目录,一旦找到文件,将其转移到银行。
我也从Spring文档中看到,我可以对这些技术做mashup,即可以避免写入临时目录,让Spring Integration直接写入银行的SFTP服务器。
我能想到的其他实际示例:我有 AT&T 并订阅了自动付款,即他们每 30 天向我收费,并保持我的互联网和电话服务处于活动状态。我已向 AT&T 提供了我的银行信用卡详细信息。他们汇总所有要计费的信用卡(订户),并将数据发送到需要在每天特定时间作为批处理文件计费的 VISA 或 MASTERCARD。我希望你能与我提到的第 1 步和第 2 步联系起来。快乐学习!
但我无法想象可以结合这些技术的场景
好吧,让我们以一家相当大的公司为例,该公司需要大量带有 Spring 集成的批处理作业,您可以设置一个系统来
- 管理批处理作业
- 根据资源计划作业(例如在特定时间窗口运行批处理作业以不中断在线业务)
- 只需启动/停止作业
- 提供作业状态视图
实际上它只是
- 调度
- 报告
- 管理
通过许多企业消息概念,请参阅http://www.eaipatterns.com/它已经链接在http://www.springsource.org/spring-integration
对于您的范围-学校项目-如果您确实有一些工作(3个或更多),那么您可以构建一个批处理启动工具,一个GUI(spring mvc),它提供按钮来启动/停止/监控/查看那些报告工作,但我认为这是一个非常大的项目,很容易跨越很多人周
SpringSource 博主 Dave Syer 有一个很好的整合两者的例子(不是双关语): PRACTICAL USE OF SPRING BATCH 和 SPRING INTEGRATION
让我们想象一下,您正在为一个健康维护组织 (HMO) 构建一个健康系统。这样的系统可能有以下要求:
对于一年多未接受健康检查的患者,发送电子邮件和/或短信提醒他们需要检查。
为了鼓励患者进行健康检查,请在电子邮件或短信中允许“回复”功能,通知接待员打电话安排预约。
对于那些需要定期随访的慢性病患者,也可以发送电子邮件或发短信给他们。
每周缠着病人,直到他们得到他们的检查,但为了理智,不会比这更频繁。
显然,这样的健康系统会有一个数据库来跟踪病人,它可能有一个像这样的表:
CREATE TABLE patient
(
patient_id INTEGER,
first_name VARCHAR2(255) NOT NULL,
last_name VARCHAR2(255) NOT NULL,
last_checkup_date DATE,
follow_up_days INTEGER
email_address VARCHAR2(255),
mobile_nbr VARCHAR2(255),
last_notify_date DATE,
PRIMARY KEY(patient_id)
);
对于文本消息,这是 JMS 的理想案例。您可以使用 HornetQ、RabbitMQ、ActiveMQ 或许多其他工具。
现在,停下来想一想,如果您要在纯 Java 中执行此操作,您必须编写的所有代码。对于我刚才提到的需求,您可以在没有一行 Java 代码的情况下编写这个应用程序。