Jms Wildfly 9.1消息传递(群集hornetq)-域模式-主题消息(非共享订阅),MDB仅在一个节点上使用

Jms Wildfly 9.1消息传递(群集hornetq)-域模式-主题消息(非共享订阅),MDB仅在一个节点上使用,jms,cluster-computing,hornetq,message-driven-bean,wildfly-9,Jms,Cluster Computing,Hornetq,Message Driven Bean,Wildfly 9,我正在域模式下使用Wildfly 9.1 我有三位主持人:A、B和C 所有节点都有一个具有相同test.ear的测试服务器 启动三个节点后,所有ClusterConnectionBridge都在它们之间正确创建 每个节点在commonTopic上发送消息,MDB记录接收到的消息 问题是,我在节点A上看到的只是他自己发送的消息。在其他节点上,我看到记录了A、B、C发送的所有消息。这很奇怪,因为在节点A上使用tcpdump时,我在端口8080上看到来自其他节点的传入消息 使用cli获取节点A上的指标

我正在域模式下使用Wildfly 9.1

我有三位主持人:A、B和C

所有节点都有一个具有相同test.ear的测试服务器

启动三个节点后,所有
ClusterConnectionBridge
都在它们之间正确创建

每个节点在
commonTopic
上发送消息,MDB记录接收到的消息

问题是,我在节点A上看到的只是他自己发送的消息。在其他节点上,我看到记录了A、B、C发送的所有消息。这很奇怪,因为在节点A上使用tcpdump时,我在端口8080上看到来自其他节点的传入消息

使用cli获取节点A上的指标:

[domain@MASTER:19990 /] /host=SLAVE.A/server=test/subsystem=messaging/hornetq-server=default/jms-topic=commonTopic:read-resource(recursive=true,proxies=false,include-runtime=true,include-defaults=true)
{
    "outcome" => "success",
    "result" => {
        "delivering-count" => 0,
        "durable-message-count" => 0,
        "durable-subscription-count" => 1,
        "entries" => [
            "java:/jms/commonTopic",
            "java:jboss/exported/jms/commonTopic"
        ],
        "message-count" => 0L,
        "messages-added" => 150L,
        "non-durable-message-count" => 0,
        "non-durable-subscription-count" => 3,
        "subscription-count" => 4,
        "temporary" => false,
        "topic-address" => "jms.topic.commonTopic"
    }
}
我看到添加的消息数是一个节点发送的消息数的3倍。因此,消息似乎是通过网桥接收的,而不是被MDB使用

有人能告诉我在哪里可以找到这个问题吗

主机位于同一局域网上的虚拟机上

如果我在PC上启动一个节点D并将其加入群集,也会发生同样的情况。节点D记录来自其他3个节点的所有消息,但在其他节点上不记录任何消息

以下是my domain.xml中有关HornetQ配置的片段:

<subsystem xmlns="urn:jboss:domain:messaging:3.0">
    <hornetq-server>
        <security-enabled>false</security-enabled>
        <jmx-management-enabled>true</jmx-management-enabled>
        <journal-file-size>102400</journal-file-size>

        <connectors>
            <http-connector name="http-connector" socket-binding="http">
                <param key="http-upgrade-endpoint" value="http-acceptor"/>
            </http-connector>
            <http-connector name="http-connector-throughput" socket-binding="http">
                <param key="http-upgrade-endpoint" value="http-acceptor-throughput"/>
                <param key="batch-delay" value="50"/>
            </http-connector>
            <netty-connector name="netty" socket-binding="messaging"/>
            <netty-connector name="netty-throughput" socket-binding="messaging-throughput">
                <param key="batch-delay" value="50"/>
            </netty-connector>
            <in-vm-connector name="in-vm" server-id="0"/>
        </connectors>

        <acceptors>
            <http-acceptor http-listener="default" name="http-acceptor"/>
            <http-acceptor http-listener="default" name="http-acceptor-throughput">
                <param key="batch-delay" value="50"/>
                <param key="direct-deliver" value="false"/>
            </http-acceptor>
            <netty-acceptor name="netty" socket-binding="messaging"/>
            <netty-acceptor name="netty-throughput" socket-binding="messaging-throughput">
                <param key="batch-delay" value="50"/>
                <param key="direct-deliver" value="false"/>
            </netty-acceptor>
            <in-vm-acceptor name="in-vm" server-id="0"/>
        </acceptors>

        <broadcast-groups>
            <broadcast-group name="bg-group">
                <jgroups-stack>udp</jgroups-stack>
                <jgroups-channel>hq-cluster</jgroups-channel>
                <connector-ref>
                    http-connector
                </connector-ref>
            </broadcast-group>
        </broadcast-groups>

        <discovery-groups>
            <discovery-group name="dg-group">
                <jgroups-stack>udp</jgroups-stack>
                <jgroups-channel>hq-cluster</jgroups-channel>
            </discovery-group>
        </discovery-groups>

        <cluster-connections>
            <cluster-connection name="my-cluster">
                <address>jms</address>
                <connector-ref>http-connector</connector-ref>
                <use-duplicate-detection>true</use-duplicate-detection>
                <forward-when-no-consumers>false</forward-when-no-consumers>
                <max-hops>1</max-hops>
                <discovery-group-ref discovery-group-name="dg-group"/>
            </cluster-connection>
        </cluster-connections>

        <security-settings>
            <security-setting match="#">
                <permission type="send" roles="guest"/>
                <permission type="consume" roles="guest"/>
                <permission type="createNonDurableQueue" roles="guest"/>
                <permission type="deleteNonDurableQueue" roles="guest"/>
            </security-setting>
        </security-settings>

        <address-settings>
            <address-setting match="#">
                <dead-letter-address>jms.queue.DLQ</dead-letter-address>
                <expiry-address>jms.queue.ExpiryQueue</expiry-address>
                <max-size-bytes>10485760</max-size-bytes>
                <page-size-bytes>2097152</page-size-bytes>
                <message-counter-history-day-limit>10</message-counter-history-day-limit>
                <redistribution-delay>1000</redistribution-delay>
            </address-setting>
        </address-settings>

        <jms-connection-factories>
            <connection-factory name="InVmConnectionFactory">
                <connectors>
                    <connector-ref connector-name="in-vm"/>
                </connectors>
                <entries>
                    <entry name="java:/jms/MessageConnectionFactory"/>
                    <entry name="java:jboss/jms/MessageConnectionFactory"/>
                    <entry name="java:/ConnectionFactory"/>
                </entries>
                <reconnect-attempts>-1</reconnect-attempts>
            </connection-factory>
            <connection-factory name="RemoteConnectionFactory">
                <connectors>
                    <connector-ref connector-name="http-connector"/>
                </connectors>
                <entries>
                    <entry name="java:jboss/exported/jms/MessageConnectionFactory"/>
                    <entry name="java:jboss/exported/jms/RemoteConnectionFactory"/>
                </entries>
                <ha>true</ha>
                <block-on-acknowledge>true</block-on-acknowledge>
                <reconnect-attempts>-1</reconnect-attempts>
            </connection-factory>
            <pooled-connection-factory name="hornetq-ra">
                <transaction mode="xa"/>
                <connectors>
                    <connector-ref connector-name="in-vm"/>
                </connectors>
                <entries>
                    <entry name="java:/JmsXA"/>
                    <entry name="java:jboss/DefaultJMSConnectionFactory"/>
                </entries>
            </pooled-connection-factory>
        </jms-connection-factories>

        <jms-destinations>
            <jms-queue name="ExpiryQueue">
                <entry name="jms/queue/ExpiryQueue"/>
                <entry name="java:jboss/exported/jms/queue/ExpiryQueue"/>
                <durable>true</durable>
            </jms-queue>
            <jms-queue name="DLQ">
                <entry name="jms/queue/DLQ"/>
                <entry name="java:jboss/exported/jms/queue/DLQ"/>
                <durable>true</durable>
            </jms-queue>
            <jms-topic name="commonTopic">
                <entry name="java:/jms/commonTopic"/>
                <entry name="java:jboss/exported/jms/commonTopic"/>
            </jms-topic>
            </jms-topic>
        </jms-destinations>
    </hornetq-server>
</subsystem>

假的
真的
102400
udp
总部集群
http连接器
udp
总部集群
jms
http连接器
真的
假的
1.
jms.queue.DLQ
jms.queue.ExpiryQueue
10485760
2097152
10
1000
-1
真的
真的
-1
真的
真的
我发现问题是由消息持久性引起的。 5秒的生存时间不足以让节点A使用该消息。 我在expiredQueue上找到过期邮件。 每个节点每10秒发送一条消息,因此我不理解消息在节点A上过期的原因