当前位置: 首页 > 知识库问答 >
问题:

Spring集成,更改udp出站通道端口

麻和雅
2023-03-14

我正在使用spring集成以UDP发送一行文件。以下是我正在做的:

<int-file:inbound-channel-adapter
    prevent-duplicates="false" id="filesIn" directory="file:input"
    channel="inputFiles">
    <int:poller default="true" fixed-rate="1000" />
</int-file:inbound-channel-adapter>

<int:splitter input-channel="inputFiles" output-channel="output">
    <bean class="fr.spring.demo.FileSplitter">
        <property name="commentPrefix" value="#" />
    </bean>
</int:splitter>

<int:transformer input-channel="output" expression="payload"
    output-channel="exampleChannel" />

<int:channel id="exampleChannel" />

<int-ip:udp-outbound-channel-adapter
    id="udpOut" channel="exampleChannel" host="192.168.0.1" port="11111">
</int-ip:udp-outbound-channel-adapter>

因此,它从库中获取文件列表,将文件拆分为行并在端口11111上发送该行。

我想做的是根据文件扩展名在预定义端口上发送行:

  • *. txt文件的所有行都将在端口11111上发送
  • *. csv文件的所有行都将在端口11112上发送
  • 等等

谢啦!

共有2个答案

夔建章
2023-03-14

当前无法根据消息选择端口;请随时打开新功能JIRA问题。

同时,您可以声明两个适配器,每个端口一个,并在上游添加一个路由器,根据文件扩展名路由到其中一个适配器。

曾绯辞
2023-03-14

谢谢Gary!

以下是我如何进行的:

<int-file:inbound-channel-adapter
    prevent-duplicates="false" id="filesIn" directory="file:input"
    channel="inputFiles">
    <int:poller default="true" fixed-rate="1000" />
</int-file:inbound-channel-adapter>


<int:chain input-channel="inputFiles">
    <int:header-enricher>
        <int:header name="extension"
            expression="payload.getName().substring(payload.getName().lastIndexOf('.'))" />
    </int:header-enricher>
    <int:splitter>
        <bean class="fr.spring.demo.FileSplitter">
            <property name="commentPrefix" value="#" />
        </bean>
    </int:splitter>
    <int:router expression="headers.extension">
        <int:mapping value=".gps" channel="udpChannel_11111" />
        <int:mapping value=".ths" channel="udpChannel_11112" />
    </int:router>
</int:chain>

<int:channel id="udpChannel_11111" />
<int:channel id="udpChannel_11112" />
<int-ip:udp-outbound-channel-adapter
    channel="udpChannel_11111" host="192.168.0.1" port="11111" />
<int-ip:udp-outbound-channel-adapter
    channel="udpChannel_11112" host="192.168.0.1" port="11112" />
 类似资料:
  • 问题内容: 入站和出站通道适配器之间的根本区别是什么? 任何示例都将非常有帮助。 我已经查看过Spring文档,这种“方向性”的区别对我来说还不清楚。我支持配置了outbound-channel-adapter的应用程序,但是我发现使用 出站 标签可以直观地了解行为计数器。该适配器获取一个外部文件,然后 将其 引入应用程序中, 在 该应用程序中我们解析文件并保留数据。 这类似于这个问题,但是我想更

  • 可以在运行时向spring integration dsl注册MessageSources吗? 在我的例子中,我想创建多个FileReadingMessageSources(基于UI的输入),然后将有效负载发送到特定的通道/jms路由(从元数据或用户输入读取) 另一个问题是,是否可以动态注册IntegrationFlows?

  • 使用Spring Integration Kafka,使用出站通道适配器,我尝试向名为“test”的主题发送消息 通过命令行终端,我启动了动物园管理员、kafka并创建了名为“test”的主题 Spring XML配置 JUnit测试代码 测试用例成功,在调试时,我发现channel.send()返回true 我使用下面的命令通过命令行检查了主题,但是我在测试主题中看不到任何消息。 bin/kaf

  • 我需要一个http入站流通道,类似于ftp流适配器通道(http://docs.spring.io/spring-integration/docs/4.3.9.RELEASE/reference/html/ftp.html#ftp-流媒体)但我找不到,SI支持吗?如果不是,是否有可能解决问题? 我需要从http流通道接收soap消息,使用SAX转换消息,然后将其发送到http出站流通道

  • 我正在使用Spring集成jms出站通道适配器,它将消息发送到动态队列。我使用属性destination expression=“headers.DestinationQueueName”。在将出站消息写入OUT\U MSG通道之前,在代码中设置DestinationQueueName。 如何在队列上设置这些属性:,和?

  • 我在我们的项目中引入了spring集成,而不是遗留集成架构。该体系结构支持发送者和累犯。每个发件人可以配置3个目的地。 null Spring integration gateways看起来很合适。我可以使用default-request-channel来表示主流,error-channel来表示失败流。备份流的问题。如何复制网关传入消息并将其放置到备份通道? 更准确地说,这里是一个测试和代码。