日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Spring Integration Java DSL示例–使用Jms名称空间工厂进一步简化

發布時間:2023/12/3 java 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring Integration Java DSL示例–使用Jms名称空间工厂进一步简化 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在較早的博客文章中,我談到了虛擬盧布·戈德堡流程,該流程通過一系列復雜的步驟將字符串變成大寫,本文的前提是引入Spring Integration Java DSL,作為通過xml配置文件定義集成流程的替代方法。

感謝Artem Bilan ,在寫完博客條目后,我學到了一些新東西,并希望在此處記錄這些學習內容:

因此,首先是我的原始樣本,在這里,我有以下流程(粗體顯示):

  • 接受此類消息-“春天來了,你好”
  • 將其拆分為單個詞(您好,來自,春天,完整)
  • 將每個單詞發送到ActiveMQ隊列
  • 從隊列中拾取單詞片段并大寫每個單詞
  • 將響應放回響應隊列
  • 提取消息,根據單詞的原始順序重新排序
  • 聚合成一個句子(“ HELLO FROM SPRING INTEG”),然后
  • 將句子返回給調用應用程序。
  • 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();}@Bean public JmsOutboundGateway jmsOutboundGateway() {JmsOutboundGateway jmsOutboundGateway = new JmsOutboundGateway();jmsOutboundGateway.setConnectionFactory(this.connectionFactory);jmsOutboundGateway.setRequestDestinationName("amq.outbound");jmsOutboundGateway.setReplyChannel(sequenceChannel());return jmsOutboundGateway; }

    事實證明,根據Artem Bilan的反饋,這里可以優化一些事情。

    首先,請注意我是如何明確定義兩個直接通道的:“ requestChannel”(用于啟動接收字符串消息的流)和“ sequenceChannel”(用于在消息從jms消息隊列返回后處理消息),實際上可以完全刪除并這種方式使流程更加簡潔:

    @Bean public IntegrationFlow toOutboundQueueFlow() {return IntegrationFlows.from("requestChannel").split(s -> s.applySequence(true).get().getT2().setDelimiters("\\s")).handle(jmsOutboundGateway()).resequence().aggregate(aggregate ->aggregate.outputProcessor(g ->Joiner.on(" ").join(g.getMessages().stream().map(m -> (String) m.getPayload()).collect(toList()))), null).get(); }@Bean public JmsOutboundGateway jmsOutboundGateway() {JmsOutboundGateway jmsOutboundGateway = new JmsOutboundGateway();jmsOutboundGateway.setConnectionFactory(this.connectionFactory);jmsOutboundGateway.setRequestDestinationName("amq.outbound");return jmsOutboundGateway; }

    現在僅通過聲明其名稱即可隱式創建“ requestChannel”。 序列頻道更有趣,引用了Artem Bilan –

    不要為AbstractReplyProducingMessageHandler指定outputChannel并依賴DSL

    這意味著jmsOutboundGateway是一個AbstractReplyProducingMessageHandler,其答復通道是由DSL隱式派生的。 進一步地,兩種方法被合而為一,這兩種方法較早地處理了將消息發送到隊列然后在消息返回時繼續進行的流程。 恕我直言,由于這一變化,它的確讀得更好。

    第二個不錯的變化是本文介紹的主題是Jms命名空間工廠,當我寫上一篇博客文章時,DSL支持定義AMQ入站/出站適配器/網關,現在支持基于Jms的入站/ adapter適配器/網關,這進一步簡化了流程,流程現在看起來像這樣:

    @Bean public IntegrationFlow toOutboundQueueFlow() {return IntegrationFlows.from("requestChannel").split(s -> s.applySequence(true).get().getT2().setDelimiters("\\s")).handle(Jms.outboundGateway(connectionFactory).requestDestination("amq.outbound")).resequence().aggregate(aggregate ->aggregate.outputProcessor(g ->Joiner.on(" ").join(g.getMessages().stream().map(m -> (String) m.getPayload()).collect(toList()))), null).get(); }

    該流的入站Jms部分還簡化為以下內容:

    @Bean public IntegrationFlow inboundFlow() {return IntegrationFlows.from(Jms.inboundGateway(connectionFactory).destination("amq.outbound")).transform((String s) -> s.toUpperCase()).get(); }

    因此,總而言之,Spring Integration Java DSL是一種簡潔配置Spring Integration流的令人興奮的新方法。 如何簡化流的可讀性已經令人印象深刻,Jms名稱空間工廠的引入使基于JMS的流更進一步。

    • 我已經用本文列出的更改更新了示例應用程序– https://github.com/bijukunjummen/rg-si。

    翻譯自: https://www.javacodegeeks.com/2014/07/spring-integration-java-dsl-sample-further-simplification-with-jms-namespace-factories.html

    創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

    總結

    以上是生活随笔為你收集整理的Spring Integration Java DSL示例–使用Jms名称空间工厂进一步简化的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。