JavaLib | 消息引擎的妙用
JavaLib开始支持消息引擎啦。这里我们以支付方式的选择来进行演示。
闲话少说,直接进入今天的主题。
项目搭建
1、你需要用Spring Boot搭建一个项目
2、引入 JavaLib
<dependencies> ... <dependency> <groupId>com.github.fengwenyi</groupId> <artifactId>JavaLib</artifactId> <version>1.0.4.RELEASE</version> </dependency> ... </dependencies> <repositories> <repository> <id>jitpack.io</id> <url>https://jitpack.io</url> </repository> </repositories>
写代码
1、编写Handler。需要实现 Handler
接口中的 execute
方法。
这里有两个,AliPayHandler
, VXPayHandler
。我们看一下 AliPayHandler
import com.fengwenyi.javalib.handler.Handler; import com.fengwenyi.javalib.messageengine.CommonMessage; import com.fengwenyi.messageengine.MEConstant; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; /** * 支付宝支付Handler * * @author Wenyi Feng * @since 2018-09-06 */ @Component @Slf4j public class AliPayHandler implements Handler { @Override public void execute(CommonMessage message) throws Exception { log.info("<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"); log.info("支付方式:{}", "支付宝"); log.info("姓名:{}", message.getHeader(MEConstant.NAME)); log.info("账号:{}", MEConstant.ACCOUNT); log.info(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"); } }
2、编写Bean。
import com.fengwenyi.javalib.handler.HandlerRegister; import com.fengwenyi.messageengine.handler.AliPayHandler; import com.fengwenyi.messageengine.handler.VXPayHandler; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /** * Bean配置 * * @author Wenyi Feng * @since 2018-09-06 */ @Configuration public class BeanConfig { @Autowired private AliPayHandler aliPayHandler; @Autowired private VXPayHandler vxPayHandler; @Bean public HandlerRegister messageEngineBean() { HandlerRegister handlerRegister = new HandlerRegister(); handlerRegister.setHandler("ali", aliPayHandler); handlerRegister.setHandler("vx", vxPayHandler); return handlerRegister; } }
3、写测试代码
import com.fengwenyi.javalib.handler.Handler; import com.fengwenyi.javalib.handler.HandlerRegister; import com.fengwenyi.javalib.messageengine.CommonMessage; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @SpringBootApplication @RestController public class MessageEngineApplication { public static void main(String[] args) { SpringApplication.run(MessageEngineApplication.class, args); } @Autowired private HandlerRegister handlerRegister; @RequestMapping("/pay") public void pay(String type, String name, String account) { CommonMessage cm = new CommonMessage(); cm.setHeader(MEConstant.NAME, name); cm.setHeader(MEConstant.ACCOUNT, account); Handler handler = handlerRegister.getHandler(type); try { handler.execute(cm); } catch (Exception e) { e.printStackTrace(); } } }
测试
请求URL
http://localhost:8080/pay?type=ali&name=张三&account=ali_zhangsan
打印日志(截图)
请求URL
http://localhost:8080/pay?type=vx&name=张三&account=vx_zhangsan
打印日志(截图)
资料
[1] 感谢 @毛什么文 叫我写 Bean
[2] 本节测试代码:message-engine
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
C# 日期格式化常用
常用日期帮助使用 C# DateTime日期格式化 C# DateTime与时间戳转换 不同运行环境日期统一 1、CultureInfo的InvariantCulture的作用 (1)、CultureInfo使整个.NET Framework更加人性化,因为这可以使同一个数据适应不同地区和文化,这样当然满足处于不同地区和文化的用户。但前提是数据给“人”看,如果这些数据用于计算机之间的传输,即给“机器”看,这样的多文化处理反而不妥,造成同一个数据的不同展现形式,尤其是读写两方的文化地区不同时,数据可能根本无法被正常读取或者产生潜在bug,因此这里,正是InvariantCulture的用武之地。 (2)、当进行数字,日期时间,字符串匹配时,都会进行CultureInfo的操作,也就是不同的CultureInfo下,这些操作的结果可能会不一样。这里要介绍一下非常容易被忽视InvariantCulture。 2、使用场景 你编写一个程序,要向数据中心服务器传递一些时间数据,你会怎么写?直接DateTime.ToString()?那你就大错特错了,下面用代码,举个非常形象的例子。在一个控制台里...
- 下一篇
RabbitMQ发布订阅实战-实现延时重试队列
RabbitMQ是一款使用Erlang开发的开源消息队列。本文假设读者对RabbitMQ是什么已经有了基本的了解,如果你还不知道它是什么以及可以用来做什么,建议先从官网的 RabbitMQ Tutorials 入门教程开始学习。 本文将会讲解如何使用RabbitMQ实现延时重试和失败消息队列,实现可靠的消息消费,消费失败后,自动延时将消息重新投递,当达到一定的重试次数后,将消息投递到失败消息队列,等待人工介入处理。在这里我会带领大家一步一步的实现一个带有失败重试功能的发布订阅组件,使用该组件后可以非常简单的实现消息的发布订阅,在进行业务开发的时候,业务开发人员可以将主要精力放在业务逻辑实现上,而不需要花费时间去理解RabbitMQ的一些复杂概念。 本文将会持续修正和更新,最新内容请参考我的 GITHUB 上的 程序猿成长计划 项目,欢迎 Star,更多精彩内容请 follow me。 概要 我们将会实现如下功能 结合RabbitMQ的Topic模式和Work Queue模式实现生产方产生消息,消费方按需订阅,消息投递到消费方的队列之后,多个worker同时对消息进行消费 结合Rabbi...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- CentOS关闭SELinux安全模块
- Hadoop3单机部署,实现最简伪集群
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- SpringBoot2全家桶,快速入门学习开发网站教程
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- MySQL8.0.19开启GTID主从同步CentOS8
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2整合Redis,开启缓存,提高访问速度