gpt4 book ai didi

java - 使用 Spring Integration 将域对象路由到适当的方法

转载 作者:行者123 更新时间:2023-12-01 11:09:26 27 4
gpt4 key购买 nike

由于 this question,我最近开始研究 Spring Integration并对基于对象类型的路由有疑问。

我正在维护的应用程序需要处理来自传入 ActiveMQ 队列 (request.queue) 的请求,并将有关主题 (response.topic) 的响应发送回调用者。目前请求的结构如下:

public abstract class Request {

// base class
}

public abstract class CustomerRequest extends Request {

// base class for customer-specific requests
}

public class FindCustomerByIdRequest extends CustomerRequest {

private int id;
}

public class FindAllCustomersRequest extends CustomerRequest {

private boolean includeArchivedCustomers;
}

public class AddCustomerRequest extends CustomerRequest {

private String name;
private Date signupDate;
private Address address;
}

我为每个高级域对象提供了一个服务,它提供了服务这些传入请求的功能:

@Service
public class CustomerService {

public CustomerResponse findCustomerById(FindCustomerByIdRequest request) {

// code snipped

return customerResponse;
}

public AddCustomerResponse addCustomer(AddCustomerRequest request) {

// code snipped

return addCustomerResponse;
}
}

我需要通过 @ServiceActivator 将每个特定请求路由到 CustomerService 中的适当方法,据我所知,可以通过为每个请求创建单独的 channel 并实现PayloadTypeRouter 根据类型将请求发送到正确的 channel 。

随着时间的推移,请求类型列表将会增长,我怀疑每个请求一个 channel 的设置是否高效/实用/可扩展。例如,如果将来有 100 种不同的请求类型,就会有 100 个不同的 channel 。

如果我可以将父类(super class) CustomerRequest 的高级请求路由到 CustomerService 并让 Spring 找出通过注释或调用的适当方法,那就太好了其他一些机制。有谁知道这是否可行,或者对多 channel 方法有任何评论吗?

最佳答案

如果没有歧义,请使用 <service-activator ... reg="fooBean" /> (否 method )框架将根据有效负载选择目标方法。

如果存在歧义(同一类型有多个方法),则会失败。

但是,具有 100 多个方法的单个类可能不是一个好的设计。

关于java - 使用 Spring Integration 将域对象路由到适当的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32548750/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com