开关站。如何在 Receiver Service 中路由消息?
Switchyard. How to route messages in Reciever Service?
Switchyard 对我来说是新事物,我完全不知道该去哪里找。
我有两个由 ESB 连接的服务。
我从发件人发送带有数据的简单 class。基于 class 我想要的类型
接收方决定做什么。
因此 class 的类型将是操作,并且 class 中的数据将用作该操作的值。
例如,如果我想创建新客户,我会像这样发送到总线:
class CreateCustomerMessage{
public String fName;
public String lName;
public Int age;
}
接收方收到消息,看到他必须创建客户并将此消息路由到
class CustomerOperationsBean{
public Long createCustomer(CreateCustomerMessage message){...}
}
并创建了这个客户。
有人可以告诉我该怎么做吗?
所以,这是我的发现。
如果您有 CamelService(我使用 java 路由配置),您可以使用类似于此的构造来匹配传入消息 class:
public void configure() {
from("switchyard://QueueConsumerService")
.choice()
.when(body(InventoryRequest.class))
.log("Received Inventory message : ${body}")
.to("some_endpoint")
.when(body(AuditRequest.class))
.log("Audit request : ${body}");
.to("some_other_endpoint")
}
就是这样。
some_endpoint 和 some_other_endpoint 这里可以是任何端点,java class 或者另一个 Camel路由器。
gl hf.
Switchyard 对我来说是新事物,我完全不知道该去哪里找。 我有两个由 ESB 连接的服务。 我从发件人发送带有数据的简单 class。基于 class 我想要的类型 接收方决定做什么。 因此 class 的类型将是操作,并且 class 中的数据将用作该操作的值。
例如,如果我想创建新客户,我会像这样发送到总线:
class CreateCustomerMessage{
public String fName;
public String lName;
public Int age;
}
接收方收到消息,看到他必须创建客户并将此消息路由到
class CustomerOperationsBean{
public Long createCustomer(CreateCustomerMessage message){...}
}
并创建了这个客户。 有人可以告诉我该怎么做吗?
所以,这是我的发现。 如果您有 CamelService(我使用 java 路由配置),您可以使用类似于此的构造来匹配传入消息 class:
public void configure() {
from("switchyard://QueueConsumerService")
.choice()
.when(body(InventoryRequest.class))
.log("Received Inventory message : ${body}")
.to("some_endpoint")
.when(body(AuditRequest.class))
.log("Audit request : ${body}");
.to("some_other_endpoint")
}
就是这样。 some_endpoint 和 some_other_endpoint 这里可以是任何端点,java class 或者另一个 Camel路由器。 gl hf.