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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

spring 异步返回结果_使用Spring Integration聚合异步结果

發布時間:2023/12/3 javascript 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 spring 异步返回结果_使用Spring Integration聚合异步结果 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

spring 異步返回結果

嗨,我遇到了一個問題,該問題使用Spring Integration解決方案非常好。 很多時候,我們需要一種將消息分發到未知數量的目的地的方案。 為此,我們使用主題方法。 但是有時,我們還希望從收到消息的所有目的地接收答案,并將其匯總為單個結果答案。 為此,我們可以使用結合了Aggregator和ReleaseStrategy接口的渠道。 在這篇文章中,我不會專注于“渠道實施”。

假設我們有一個生產者將其消息發送到主題。 現在我們有一個接收該消息的消費者。 使用網關和處理器接口,我們可以以任何所需的類型發送該消息:

public interface Processor {public void sendResponse(String response); }

消費者代碼:

@Override public void onMessage(Message message) {String resultMessage = "";try{processor.sendResponse(resultMessage);}catch (Exception e){log.error("Error while processing message in channel consumer. errorMsg=" + e.getMessage(), e);} }

現在,該消息將被傳遞到一個通道(“在通道中”)。我們可以向該消息添加額外的信息(如果我們有不同的消息組)。 添加了額外的信息后,我們將該消息發送到另一個通道(“ Out通道”),這就是魔術:我們創建了兩個pojo,稍后將使用XML配置將其綁定到接口。 發行策略:

public class ReleaseStrategy {public boolean canRelease(List results){// check if all 5 subscribers sent responsesif (results.size() == 5){return true;}return false;} }

聚合器:

public class Aggregator {public String aggregate(List results){String finalResult= "SUCCESS_RESULT";for (String result: results) {if (result.equals("ERROR_RESULT")) {finalResult= "ERROR_RESULT";break;}}return finalResult;} }

基本上,這里發生的事情是,在我們通過ReleaseStrategy接口的canRelease方法返回“ true”值之后,聚合器將能夠接收聚合的消息并將單個結果分派到最終目的地(可能是另一個消息使用者將獲得的隊列并處理結果)Xml配置:

< ?xml version="1.0" encoding="UTF-8"?>

參考: IdanFridman.com博客上的JCG合作伙伴 Idan Fridman 使用Spring Integration聚合異步結果 。

翻譯自: https://www.javacodegeeks.com/2013/06/aggregating-async-results-using-spring-integration.html

spring 異步返回結果

總結

以上是生活随笔為你收集整理的spring 异步返回结果_使用Spring Integration聚合异步结果的全部內容,希望文章能夠幫你解決所遇到的問題。

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