当前位置: 首页 > news >正文

网站建设z济南建设工程交易中心

网站建设z,济南建设工程交易中心,北京房山网站建设产品更新培训,是在百度中建设网站现在已经为Spring Integration引入了新的基于Java的DSL #xff0c;这使得可以使用基于纯Java的配置而不是基于Spring XML的配置来定义Spring Integration消息流。 我尝试使用DSL来获得示例集成流–我称其为Rube Goldberg流 #xff0c;因为它在尝试大写作为输入传递的字符串… 现在已经为Spring Integration引入了新的基于Java的DSL 这使得可以使用基于纯Java的配置而不是基于Spring XML的配置来定义Spring Integration消息流。 我尝试使用DSL来获得示例集成流–我称其为Rube Goldberg流 因为它在尝试大写作为输入传递的字符串时遵循复杂的路径。 该流程如下所示并做了一些疯狂的事情来执行简单的任务 它接受了这样的消息–“春天来了你好” 将其拆分为单个词您好来自春天完整 将每个单词发送到ActiveMQ队列 从队列中单词片段由浓缩器拾取以大写每个单词 将响应放回响应队列 根据单词的原始顺序对其进行拾取重新排序 聚合成一个句子“ HELLO FROM SPRING INTEG” 返回到应用程序。 从Spring Integration Java DSL开始一个简单的基于Xml的配置将大写的String变为 channel idrequestChannel/gateway idechoGateway service-interfacerube.simple.EchoGateway default-request-channelrequestChannel /transformer input-channelrequestChannel expressionpayload.toUpperCase() / 这里没有什么大不了的事消息传递网关接收从应用程序传递来的消息在转换器中将其大写然后将其返回给应用程序。 在Spring Integration Java DSL中表达这一点 Configuration EnableIntegration IntegrationComponentScan ComponentScan public class EchoFlow {Beanpublic IntegrationFlow simpleEchoFlow() {return IntegrationFlows.from(requestChannel).transform((String s) - s.toUpperCase()).get();} }MessagingGateway public interface EchoGateway {Gateway(requestChannel requestChannel)String echo(String message); } 请注意MessagingGateway批注不是Spring Integration Java DSL的一部分它是Spring Integration中的现有组件其作用与基于XML的配置中的网关组件相同。 我喜欢这样的事实即可以使用类型安全的Java 8 lambda表达式而不是Spring-EL表达式来表示转换。 请注意转换表达式可以用很少的其他方式进行编码 ??.transform((String s) - s.toUpperCase()) 要么 ??.String, Stringtransform(s - s.toUpperCase()) 或使用方法引用 ??.String, Stringtransform(String::toUpperCase) 再次从基于XML的配置开始移至更复杂的Rube Goldberg流以完成相同的任务。 有两种配置来表达此流程 rube-1.xml此配置负责步骤1、2、3、6、7、8 它接受了这样的消息–“春天来了你好” 将其拆分为单个词您好来自春天完整 将每个单词发送到ActiveMQ队列 从队列中单词片段由浓缩器拾取以大写每个单词 将响应放回响应队列 根据单词的原始顺序对其进行拾取重新排序 聚合成一个句子“ HELLO FROM SPRING INTEG” 返回到应用程序。 channel idrequestChannel/!--Step 1, 8-- gateway idechoGateway service-interfacerube.complicated.EchoGateway default-request-channelrequestChanneldefault-reply-timeout5000/channel idtoJmsOutbound/!--Step 2-- splitter input-channelrequestChannel output-channeltoJmsOutbound expressionpayload.split(\s)apply-sequencetrue/channel idsequenceChannel/!--Step 3-- int-jms:outbound-gateway request-channeltoJmsOutbound reply-channelsequenceChannelrequest-destinationamq.outbound extract-request-payloadtrue/!--On the way back from the queue-- channel idaggregateChannel/!--Step 6-- resequencer input-channelsequenceChannel output-channelaggregateChannel release-partial-sequencesfalse/!--Step 7-- aggregator input-channelaggregateChannelexpressionT(com.google.common.base.Joiner).on( ).join(![payload])/ 和rube-2.xml用于步骤4、5 它接受了这样的消息–“春天来了你好” 将其拆分为单个词您好来自春天完整 将每个单词发送到ActiveMQ队列 从队列中单词片段由浓缩器拾取以大写每个单词 将响应放回响应队列 根据单词的原始顺序对其进行拾取重新排序 聚合成一个句子“ HELLO FROM SPRING INTEG” 返回到应用程序。 channel idenhanceMessageChannel/int-jms:inbound-gateway request-channelenhanceMessageChannel request-destinationamq.outbound/transformer input-channelenhanceMessageChannel expression(payload ).toUpperCase()/ 现在使用Spring Integration Java DSL表示Rube Goldberg流配置又分为两部分 EchoFlowOutbound.java Beanpublic DirectChannel sequenceChannel() {return new DirectChannel();}Beanpublic DirectChannel requestChannel() {return new DirectChannel();}Beanpublic IntegrationFlow toOutboundQueueFlow() {return IntegrationFlows.from(requestChannel()).split(s - s.applySequence(true).get().getT2().setDelimiters(\\s)).handle(jmsOutboundGateway()).get();}Beanpublic IntegrationFlow flowOnReturnOfMessage() {return IntegrationFlows.from(sequenceChannel()).resequence().aggregate(aggregate -aggregate.outputProcessor(g -Joiner.on( ).join(g.getMessages().stream().map(m - (String) m.getPayload()).collect(toList()))), null).get();} 和EchoFlowInbound.java Bean public JmsMessageDrivenEndpoint jmsInbound() {return new JmsMessageDrivenEndpoint(listenerContainer(), messageListener()); }Bean public IntegrationFlow inboundFlow() {return IntegrationFlows.from(enhanceMessageChannel()).transform((String s) - s.toUpperCase()).get(); } 同样这里的代码是完全类型安全的并且在开发时而不是在运行时如基于XML的配置检查任何错误。 我再次喜欢这样一个事实即转换聚合语句可以使用Java 8 lamda表达式而不是Spring-EL表达式来简洁地表达。 我在这里未显示的是一些支持代码用于设置activemq测试基础结构 该配置继续保留为xml我已将此代码包含在示例github项目中。 总而言之我很高兴看到这种使用纯Java来表达Spring Integration消息流的新方法并且我期待看到它的持续发展甚至可能尝试以较小的方式参与其发展。 这是github存储库中的整个工作代码https://github.com/bijukunjummen/rg-si 资源和致谢 Artem Bilan的 Spring Integration Java DSL 简介博客文章 https//spring.io/blog/2014/05/08/spring-integration-java-dsl-milestone-1-released Spring Integration Java DSL 网站和Wiki https://github.com/spring-projects/spring-integration-extensions/wiki/Spring-Integration-Java-DSL-Reference。 我无耻地从这个Wiki复制了很多代码 另外非常感谢Artem 对我提出的问题的指导 Gary Russell在Spring Integration 4.0上的网络研讨会其中详细介绍了Spring Integration Java DSL。 翻译自: https://www.javacodegeeks.com/2014/06/spring-integration-java-dsl-sample.html
http://www.yutouwan.com/news/464918/

相关文章:

  • 如何给自己做网站管理平台登录界面
  • 在线捐款网站开发wordpress调用96编辑器
  • 网站快排漫画网站开发
  • 南京做网站具体需要多少钱沈阳工程招标信息网
  • 订单插件 wordpress做网站优化排名
  • 专注高密做网站哪家好ssh框架可以做网站么
  • 高校网站建设近期情况说明网站建设怎么分好坏
  • 网站功能建设中页面wordpress 多形式
  • 丽江建设网站百度入口网址
  • 哪里可以找到免费的网站书签制作图片
  • 宝山网站建设宝山4徐汇区网站建设
  • 巩义网站建设模板网站制作从零开始
  • 做网站的如何找业务网站设计就业形势
  • 网站logo制作软件深圳商城网站哪家做的好
  • 帝国cms做企业网站外国电商设计网站有哪些
  • 石家庄制作网站推广wordpress博客排行榜
  • 没有主机怎么做自己的网站公司网址怎么注册
  • 浅谈高校门户网站建设的规范标准电影网站开发背景
  • 响应式网站优点做家常菜哪个网站最好
  • 网站建设修改教程视频教程网站建设怎么入账
  • 北京智联招聘官方网站做家政淘宝店铺购买价格
  • 网站源码怎么使用企业建立网站步骤
  • 免费做网站怎么做网站619网站开发用什么好
  • 做网站意向客户微网站如何做微信支付宝
  • 网站 子域名网站管理后台模板
  • 网站开发模板代码枣庄做网站
  • 滨海做网站哪家好北京网站优化体验
  • 无锡优化网站排名网店美工的工作内容
  • 金融网站源码代理app软件
  • 西安 网站托管建筑工程培训