Java 如何在Aeron库中创建多目标强制转换
我正在尝试使用多目的地Cast传输,但我不知道如何配置它, 我试图实现使用和解释的示例URI 我有一个出版商和两个订户 在携带SimplePublisher.java和SimpleSubscriber.java的默认aeron参数中,我更改了: 来自SimplePublisher.javaJava 如何在Aeron库中创建多目标强制转换,java,low-latency,aeron,Java,Low Latency,Aeron,我正在尝试使用多目的地Cast传输,但我不知道如何配置它, 我试图实现使用和解释的示例URI 我有一个出版商和两个订户 在携带SimplePublisher.java和SimpleSubscriber.java的默认aeron参数中,我更改了: 来自SimplePublisher.java final String channel = "aeron:udp?control=192.168.0.3:4050|control-mode=manual"; 从SimpleSubscriber.java
final String channel = "aeron:udp?control=192.168.0.3:4050|control-mode=manual";
从SimpleSubscriber.java:
我复制了SimpleSubcriber1.java和SimpleSubcriber2.java类,并更改了以下配置:
SimpleSubcriber1:
final String channel = "aeron:udp?endpoint=192.168.0.4:4051"
及
SimpleSubcriber2:
final String channel = "aeron:udp?endpoint=192.168.0.5:4052"
发布者和订阅者的错误几乎相同:
对于出版商:
Publishing to aeron:udp?control=192.168.0.3:4050|control-mode=manual on stream Id 10
io.aeron.exceptions.ChannelEndpointException: RuntimeException : Channel error: Cannot assign requested address: bind : aeron:udp?control=192.168.0.3:4050|control-mode=manual
at io.aeron.ClientConductor.onChannelEndpointError(ClientConductor.java:196)
at io.aeron.DriverEventsAdapter.onMessage(DriverEventsAdapter.java:77)
at org.agrona.concurrent.broadcast.CopyBroadcastReceiver.receive(CopyBroadcastReceiver.java:100)
at io.aeron.DriverEventsAdapter.receive(DriverEventsAdapter.java:56)
at io.aeron.ClientConductor.service(ClientConductor.java:660)
at io.aeron.ClientConductor.doWork(ClientConductor.java:151)
at org.agrona.concurrent.AgentRunner.doDutyCycle(AgentRunner.java:233)
at org.agrona.concurrent.AgentRunner.run(AgentRunner.java:159)
at java.lang.Thread.run(Thread.java:748)
Failed to connect to subscriber
对于亚转录者:
Subscribing to aeron:udp?endpoint=192.168.0.4:4051 on stream Id 10
io.aeron.exceptions.ChannelEndpointException: RuntimeException : Channel error: Cannot assign requested address: bind : aeron:udp?endpoint=192.168.0.4:4051
at io.aeron.ClientConductor.onChannelEndpointError(ClientConductor.java:187)
at io.aeron.DriverEventsAdapter.onMessage(DriverEventsAdapter.java:77)
at org.agrona.concurrent.broadcast.CopyBroadcastReceiver.receive(CopyBroadcastReceiver.java:100)
at io.aeron.DriverEventsAdapter.receive(DriverEventsAdapter.java:56)
at io.aeron.ClientConductor.service(ClientConductor.java:660)
at io.aeron.ClientConductor.doWork(ClientConductor.java:151)
at org.agrona.concurrent.AgentRunner.doDutyCycle(AgentRunner.java:233)
at org.agrona.concurrent.AgentRunner.run(AgentRunner.java:159)
at java.lang.Thread.run(Thread.java:748)
如果你需要,我可以给你更多的细节
PD:我让媒体驱动程序LowLatencyMediaDriver运行,这不是问题所在
提前感谢您配置如下:
出版商:
Publishing to aeron:udp?control=192.168.0.3:4050|control-mode=manual on stream Id 10
io.aeron.exceptions.ChannelEndpointException: RuntimeException : Channel error: Cannot assign requested address: bind : aeron:udp?control=192.168.0.3:4050|control-mode=manual
at io.aeron.ClientConductor.onChannelEndpointError(ClientConductor.java:196)
at io.aeron.DriverEventsAdapter.onMessage(DriverEventsAdapter.java:77)
at org.agrona.concurrent.broadcast.CopyBroadcastReceiver.receive(CopyBroadcastReceiver.java:100)
at io.aeron.DriverEventsAdapter.receive(DriverEventsAdapter.java:56)
at io.aeron.ClientConductor.service(ClientConductor.java:660)
at io.aeron.ClientConductor.doWork(ClientConductor.java:151)
at org.agrona.concurrent.AgentRunner.doDutyCycle(AgentRunner.java:233)
at org.agrona.concurrent.AgentRunner.run(AgentRunner.java:159)
at java.lang.Thread.run(Thread.java:748)
Failed to connect to subscriber
aeron:udp?控制=:|控制模式=动态
订户:
aeron:udp?端点=:|控制=:|控制模式=动态
MDC的默认控制模式是动态的(可以省略)。每个订阅将通过控制通道注册自身,并随后在指定的端点上接收消息
另一种方法是使用“手动”控制模式,即出版物使用addDestination
/removedestation
手动添加订阅
至于你收到的错误:
无法分配请求的地址:bind:aeron:udp?endpoint=192.168.0.4:4051
在io.aeron.ClientConductor.onChannelEndpointError(ClientConductor.java:187)
您收到该消息的原因很可能是该端口上已存在侦听内容,或者该主机上不存在该接口