- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我可以将不同的消息(不同的序列化/反序列化)发送到同一个 tcp 服务器(相同的主机和端口)并通过路由器的 header 或负载的某些值来区分 tcp-inbound-gateway 吗???
(...)
我想添加一个路由器来选择正确的 tcp-inbound-gateway 取决于 header 或有效负载中的某些字段(例如命名类型数据)。在路由器、tcp-inbound-gateway、tcp-connection-factory、序列化/反序列化之间以什么顺序输入请求(或消息)?我选择 tcp-inbound-gateway 的序列化/反序列化会有问题吗?执行此操作的正确方法是什么?
提前致谢。
编辑
在服务器中:
<!-- Common -->
<int:channel id="channelConnectionFactoryRequest" />
<int:channel id="channelConnectionFactoryResponse" />
<router method="getDestinationChannel"
input-channel="channelSConnectionFactoryRequest">
<beans:bean class="org.mbracero.integration.CustomRouter" />
</router>
<beans:bean id="customSerializerDeserializer"
class="org.mbracero.integration.serialization.CustomSerializerDeserializer" />
<int-ip:tcp-connection-factory id="customConnectionFactory"
type="server" port="${payment.port}" single-use="true"
serializer="customSerializerDeserializer"
deserializer="customSerializerDeserializer" />
<int-ip:tcp-inbound-gateway id="customInboundGateway"
connection-factory="customConnectionFactory"
request-channel="channelCustomConnectionFactoryRequest"
reply-channel="channelCustomConnectionFactoryResponse"
error-channel="errorChannel" />
<!-- Custom -->
<beans:bean id="operations"
class="org.mbracero.integration.applepay.impl.OperationsImpl" />
<!-- Operation One -->
<int:channel id="operationOneRequest" />
<int:service-activator input-channel="operationOneRequest"
output-channel="operationOneResponse" ref="operations" method="getOperationOne" />
<!-- Operation Two -->
<int:channel id="operationTwoRequest" />
<int:service-activator input-channel="operationTwoRequest"
output-channel="operationTwoResponse" ref="operations" method="getOperationTwo" />
操作实现:
ResultOne getOperationOne(RequestOne request);
ResultTwo getOperationOne(RequestTwo request);
ResultOne 和 ResultTwo 实现了 ResultBase。在 customSerializerDeserializer 的序列化中,我有:
@Override
public void serialize(ResultBase arg0, OutputStream arg1) throws IOException {
byte[] xxx = XXX.getBytes();
arg1.write(xxx);
byte[] yyy = yyy.getBytes();
arg1.write(senderName);
// **Each custom object have a method for serialize their own data**
arg0.transformDataToByte(arg1);
arg1.flush();
}
在客户端:
<gateway id="tmGateway"
service-interface="org.mbracero.integration.CustomGateway" />
<beans:bean id="operationOneSerializerDeserializer"
class="org.mbracero.integration.serialization.OperationOneSerializerDeserializer" />
<int-ip:tcp-connection-factory id="operationOneFactory"
type="client" host="127.0.0.1" port="7878" single-use="true"
serializer="operationOneSerializerDeserializer" deserializer="operationOneSerializerDeserializer" />
<int-ip:tcp-outbound-gateway id="operationOneOutGateway"
request-channel="operationOneChannel" connection-factory="operationOneFactory"
request-timeout="5000" reply-timeout="5000" remote-timeout="5000" />
<beans:bean id="operationTwoSerializerDeserializer"
class="org.mbracero.integration.operationTwoRequestSerializerDeserializer"/>
<int-ip:tcp-connection-factory id="operationTwoFactory"
type="client" host="127.0.0.1" port="7878" single-use="true"
serializer="operationTwoSerializerDeserializer"
deserializer="operationTwoSerializerDeserializer" />
<int-ip:tcp-outbound-gateway id="operationTwoOutGateway"
request-channel="operationTwoChannel" connection-factory="operationTwoFactory"
request-timeout="50000" reply-timeout="50000" remote-timeout="50000" />
自定义网关:
@Gateway(requestChannel="operationOneChannel")
OperationOneResponse sendOperationOne(OperationOneRequest request);
@Gateway(requestChannel="operationTwoChannel")
OperationTwoResponse sendOperationTwo(OperationTwo request);
最佳答案
您不能让 2 个服务器连接工厂监听同一个端口。 TCP 不允许 - 网络堆栈不知道将请求路由到哪个服务器套接字。
在客户端没有问题,但是对于单个套接字,服务器必须了解如何反序列化两种数据类型。
将序列化器/反序列化器合并为一个可能更容易(在消息中添加另一个 header ,以便反序列化器知道要解码的有效负载类型)。
关于java - 混合 tcp-connection-factory + tcp-inbound-gateway + 路由器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31280138/
我一直在试图找出一种计算以下内容的方法: 带宽、延迟、当前上传和下载速度 . 并且对我为 INBOUND-RTP、OUTBOUND-RTP 和 REMOTE-INBOUND-RTP 获得的值感到困惑。
我相信我可能不太了解 Twilio 调用的流程。我有两种情况 - 一种情况是我从浏览器调用电话(传出),第二种情况是我从手机调用电话到浏览器(客户端)(传入)。 对于这两个调用,当请求到达我的 Twi
Creative World Quartz Scheduler.
目前我有一个简单的 war ,其中包含一些 Spring 集成配置,并且使用以下代码将该 war 部署到 jetty 容器中: protected void createWac(File file,
我有一个带有 spring 集成的以下设置。 我在网关上收到 2 种不同类型的 POST 请求,它们都被传递到 service-activator 进行处理。在一种类型的 POST 请求中,我
我正在使用 Spring Integration 将 xml 文件从 SFTP 传输到本地。我使用了Spring社区提供的代码。 主类文件 public class SFTPMain { publ
我有一个从标准数据库查询开始的集成,它会更新数据库中的状态以表明集成工作正常。有用。 但是如果无法处理数据并引发异常,则状态不会按预期更新,但我想用“KO”状态更新我的数据库行,这样同一行就不会一遍又
我正在编写一个 C++ 应用程序来管理嵌入式设备的蓝牙连接。我在 Linux 下通过 D-Bus 与 BlueZ5 对话。 作为实现入站配对的第一步,我执行了以下操作: 通过AgentManager1
我们有以下基于 int-jpa 的简单工作流: [入站 channel 适配器] -> [服务激活器] 配置是这样的:
使用 GRPC 传输大量数据的最佳实践是什么?我正在向 GRPC 服务器发送请求,该服务器将流回数据。发回的数据可以是大约 100 个 protobuf 消息,也可以是几个 100.000 个 pro
下面是我的 Spring Integration 配置的一部分: 如您所见,我想定义 2 个不同的过滤器: 在 recursiveScanner 中跳过临时文
我尝试使用多个 jpa:inbound-channel-adapter。但是我有一个问题。当我添加两个入站 channel 适配器时,只有最后一个起作用。例如,有两个入站 channel ,我们现在将
我遇到这个问题,第一次处理此代码时,它运行良好,但第二次(第一次和第二次运行基于设置的 cron),它在失败文件夹中查找文件,然后删除成功文件夹并将其复制到失败文件夹中。我不知道为什么会发生这种情况?
我正在使用 URL fetch service 将请求从一个模块发送到同一应用中的另一个模块,它表示如果将 follow_redirects 参数设置为 False,则 X-Appengine-Inb
我正在用 MySQL 编写一个简单的 JDBC 代码。一切正常,我可以通过 select 语句打印表中的记录。但是当我使用 Connection.close() 关闭连接时,出现以下异常。感谢您的帮助
我目前正在使用 Spring Integration 4.1.0 和 Spring 4.1.2。我需要能够逐行读取文件并将读取的每一行用作消息。基本上我想允许“重播”我们的消息源之一,但消息不会保存在
Spring 集成 tcp 网关可以设置如下: 注意设置为 10 秒的回复超时。 是不是意味着TCP服务器会调用服务,最多可以等待10秒?如果服务在 10 秒内没有回复,TCP 服务器
我是 Spring Integration 的新手,我正在尝试设置一个简单的用例: 轮询远程 REST 端点,将返回的有效负载拆分为多行并将其发送到 Kafka 出站适配器。我成功地做了一些类似的事情
我实现了一个 sftp-inbound-channel-adapter,当处理异常时,我应该显示一条自定义消息。 我试过 : 但是一个元素 不被接受。你能解释另一种解决方
Tensorflow 版本:1.11.0 我正在尝试将 TensorBoard 与 Tensorflow keras 模型一起用于投影仪可视化。 我收到 AttributeError: Layer f
我是一名优秀的程序员,十分优秀!