首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Aeron库中创建多目标广播

如何在Aeron库中创建多目标广播
EN

Stack Overflow用户
提问于 2018-03-15 15:47:06
回答 1查看 637关注 0票数 2

我正在尝试使用多目的地广播传输,但我不知道如何配置-it,我试图使用SimplePublisher.javaSimpleSubscriber.java实现URI解释的示例

我有一个出版商和两个订户。

在带有SimplePublisher.java和SimpleSubscriber.java的默认副翼参数中,我已经更改了:

来自SimplePublisher.java

代码语言:javascript
复制
final String channel = "aeron:udp?control=192.168.0.3:4050|control-mode=manual";

来自SimpleSubscriber.java:

我复制了SimpleSubcriber1.java和SimpleSubcriber2.java类,并更改了以下配置:

SimpleSubcriber1:

代码语言:javascript
复制
final String channel = "aeron:udp?endpoint=192.168.0.4:4051"

SimpleSubcriber2:

代码语言:javascript
复制
final String channel = "aeron:udp?endpoint=192.168.0.5:4052"

我对发行者和附属作者所犯的错误几乎是完全相同的:

对于出版商:

代码语言:javascript
复制
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

而且,对于笔录者来说:

代码语言:javascript
复制
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:我有MediaDriver的LowLatencyMediaDriver运行,这不是问题

提前谢谢你

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-29 17:17:56

配置如下:

出版商:

aeron:udp?control=<publisher-ip>:<publisher-port>|control-mode=dynamic

订户:

aeron:udp?endpoint=<subscriber-ip>:<subscriber-port>|control=<publisher-ip>:<publisher-port>|control-mode=dynamic

MDC的默认控制模式是动态的(可以省略)。每个订阅将在控制通道上注册,并随后在指定的端点上接收消息。

另一种方法是使用“手动”控制模式,其中通过使用addDestination/removeDestination的发布手动添加订阅。

至于您收到的错误:

Cannot assign requested address: bind : aeron:udp?endpoint=192.168.0.4:4051 at io.aeron.ClientConductor.onChannelEndpointError(ClientConductor.java:187)

您可能收到了该消息,因为在该端口上已经有监听信息,或者该主机上不存在接口。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49303796

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档