gpt4 book ai didi

spring-boot - 基于 Apache Camel 的 Udp 服务器

转载 作者:行者123 更新时间:2023-12-05 03:05:32 24 4
gpt4 key购买 nike

我正在尝试使用 Apache Camel 创建使用系统日志消息的 udp 服务器。

没有如何正确执行的示例。

我写了以下路由,它使用自定义 serverInitializerFactory。

@Component
public class MainRoute extends RouteBuilder {

@Override
public void configure() throws Exception {
from("netty4:udp://{{app.server.host}}:{{app.server.port}}?serverInitializerFactory=#udpSyslogFlowFactory&sync=false&textline=true")
.to("seda:rowLogs");

from("seda:rowLogs?concurrentConsumers={{app.concurrent-processors}}")
.to("bean:logParser");
}

}

工厂代码:

@Component
public class UdpSyslogFlowFactory extends ServerInitializerFactory {

private int maxLineSize = 1024;

private NettyConsumer consumer;

public UdpSyslogFlowFactory() {
super();
}

public UdpSyslogFlowFactory(NettyConsumer consumer) {
this();
this.consumer = consumer;
}

@Override
protected void initChannel(Channel ch) throws Exception {
ChannelPipeline channelPipeline = ch.pipeline();
channelPipeline.addLast("encoder-SD", new StringEncoder(StandardCharsets.UTF_8));
channelPipeline.addLast("decoder-DELIM",
new DelimiterBasedFrameDecoder(maxLineSize, true, Delimiters.lineDelimiter()));
channelPipeline.addLast("decoder-SD", new StringDecoder(StandardCharsets.UTF_8));
channelPipeline.addLast("handler", new ServerChannelHandler(consumer));
}

@Override
public ServerInitializerFactory createPipelineFactory(NettyConsumer consumer) {
return new UdpSyslogFlowFactory(consumer);
}

}

看起来传入的 udp 消息没有被引用 StringDecoder 处理。

任何人都可以提供带有 Camel 的 UDP 服务器的完整示例,它使用所有传入消息的简单文本解码?

最佳答案

与其自己构建 syslog-consumer 和解码器,不如看看 Camel syslog DataFormat .

在链接的文档页面上,您可以找到带有 netty 的 syslog-consumer 示例和 mina成分。

关于spring-boot - 基于 Apache Camel 的 Udp 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50703946/

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