gpt4 book ai didi

java - 一个集群中的多个 JChannel

转载 作者:行者123 更新时间:2023-12-01 09:54:36 25 4
gpt4 key购买 nike

我认为在同一个集群中很容易有多个 JChannel(具有不同的名称)。我必须进行以下设置:

@Singleton
public class ChannelOne extends ReceiverAdapter
{
JChannel channel;

public void start()
{
channel = new JChannel();

channel.setReceiver(this);
channel.connect("ChannelOne");
}

public void receive(Message msg)
{
DataObject data = (DataObject) msg.getObject();
log.debug("JGroups: Message received event received: " + data.eventData);
}

public void send(DataObject data)
{
Message msg = new Message(null, null, data);
log.debug("JGroups: send: " + data.eventData);
channel.send(msg);
}

public void viewAccepted(View new_view)
{
log.debug("JGroups: View accepted: " + new_view);
}

}

我的 JGroups 配置如下(它在 openshift 上使用,我们不能使用 UDP!- How to open a JChannel (JGroups) using Openshift Wildfly 8 Cartridge )

<config xmlns="urn:org:jgroups"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:org:jgroups http://www.jgroups.org/schema/JGroups-3.3.xsd">
<TCP
external_addr="${env.OPENSHIFT_GEAR_DNS}"
external_port="${env.OPENSHIFT_WILDFLY_CLUSTER_PROXY_PORT}"
bind_port="${env.OPENSHIFT_WILDFLY_CLUSTER_PORT}"
bind_addr="${env.OPENSHIFT_WILDFLY_IP}"
defer_client_bind_addr="true"
enable_diagnostics="false"/>

<TCPPING timeout="3000"
initial_hosts="${env.OPENSHIFT_WILDFLY_CLUSTER}"
port_range="0"
num_initial_members="1"/>
<MERGE2/>
<FD/>
<VERIFY_SUSPECT/>
<BARRIER/>
<pbcast.NAKACK2
use_mcast_xmit="false"/>
<UNICAST3/>
<pbcast.STABLE/>
<pbcast.GMS/>
<MFC/>
<FRAG2/>
</config>

现在假设我们不仅有一个 ChannelOne,还有一个 ChannelTwo 单例,其目标是根据事件的用途来分离事件。

如果我这样做,我会发现消息并未全部正确接收。这两个 channel 之间似乎存在混合。我在日志中有很多警告消息已被删除。

我对 channel 概念的理解有什么错误?

最佳答案

channel 是集群的端点。如果您有不同的应用程序使用不同的集群,则需要将集群分开,否则应用程序将接收彼此的消息。

为此,请为不同的集群选择不同的端口(external_portbind_port)。

关于java - 一个集群中的多个 JChannel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37343162/

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