簡體   English   中英

一個集群中有多個JChannel

[英]Multiple JChannels in one cluster

我認為很容易在同一集群中具有多個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!- 如何使用Openshift Wildfly 8 Cartridge打開JChannel(JGroups)

<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 Singleton,其目標是通過事件的使用來區分事件。

如果這樣做,我發現消息沒有全部正確接收。 這兩個渠道之間似乎混在一起。 我在日志中有很多警告,指出已刪除郵件。

我對這個頻道概念有何誤解?

通道是群集的端點。 如果您有使用不同群集的不同應用程序,則需要將群集分開,否則這些應用程序將收到彼此的消息。

為此, bind_port為不同的群集選擇不同的端口( external_portbind_port )。

這是我們在OpenShift上與WF / EAP一起使用的“ ping”機制:

應該易於配置和使用。

注意:必須將權限授予運行Pod的服務帳戶,以允許其訪問Kubernetes的REST api。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM