【问题标题】:How do I connect a STOMP client to Wildfly?如何将 STOMP 客户端连接到 Wildfly?
【发布时间】:2015-09-23 12:43:38
【问题描述】:

我想将我的 WildFly 服务器公开给 STOMP 客户端,但我没有找到任何最近的示例。据我了解,最近 WildFly 版本中的所有通信都通过一个套接字(默认情况下监听 8080)。我是否需要更改任何配置或是否支持开箱即用?任何指针表示赞赏。

【问题讨论】:

    标签: wildfly stomp


    【解决方案1】:

    我使用的是不同版本的 WildFly (10.0.CR1),该版本的最小可能变化如下:

    <subsystem xmlns="urn:jboss:domain:messaging-activemq:1.0">
    <server name="default">
     ...
      <acceptor name="stomp-acceptor" factory-class="org.apache.activemq.artemis.core.remoting.impl.netty.NettyAcceptorFactory">
        <param name="protocols" value="STOMP"/>
        <param name="port" value="61613"/>
      </acceptor>
     ...
      </server>
    </subsystem>
    

    【讨论】:

    【解决方案2】:

    确实WildFly默认只监听8080端口(加上管理用的9990端口),使用HTTP协议升级切换到不同的协议。

    但是,您仍然可以为其他端口定义额外的接受器。我不知道是否可以使用 STOMP 通过端口 8080 进行协议升级,但这里是如何为端口 5445 配置额外的 Netty 接受器:

    <extension module="org.jboss.as.messaging"/>
    
    <subsystem xmlns="urn:jboss:domain:messaging:2.0">
        <hornetq-server>
            <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>
                <in-vm-connector name="in-vm" server-id="0"/>
            </connectors>
            <acceptors>
                <http-acceptor name="http-acceptor" http-listener="default"/>
                <http-acceptor name="http-acceptor-throughput" http-listener="default">
                    <param key="batch-delay" value="50"/>
                    <param key="direct-deliver" value="false"/>
                </http-acceptor>
                <netty-acceptor name="stomp-acceptor" socket-binding="messaging-stomp">
                    <param key="protocols" value="STOMP"/>
                    <param key="connection-ttl" value="30000"/>
                </netty-acceptor>
                <in-vm-acceptor name="in-vm" server-id="0"/>
            </acceptors>
            <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>
                <!--default for catch all-->
                <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>
                </address-setting>
            </address-settings>
            <jms-connection-factories>
                <connection-factory name="InVmConnectionFactory">
                    <connectors>
                        <connector-ref connector-name="in-vm"/>
                    </connectors>
                    <entries>
                        <entry name="java:/ConnectionFactory"/>
                    </entries>
                </connection-factory>
                <connection-factory name="RemoteConnectionFactory">
                    <connectors>
                        <connector-ref connector-name="http-connector"/>
                    </connectors>
                    <entries>
                        <entry name="java:jboss/exported/jms/RemoteConnectionFactory"/>
                    </entries>
                </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="java:/jms/queue/ExpiryQueue"/>
                </jms-queue>
                <jms-queue name="DLQ">
                    <entry name="java:/jms/queue/DLQ"/>
                </jms-queue>
            </jms-destinations>
        </hornetq-server>
    </subsystem>
    
    <socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}">
        <socket-binding name="messaging-stomp" port="5445"/>
    </socket-binding-group>
    

    此外,您还必须通过add-user.sh 创建一个角色为guest 的用户帐户。 STOMP 客户端将使用此帐户。

    在 WildFly 8.2.0.Final 上测试。

    【讨论】:

      【解决方案3】:

      以下配置在我的情况下起到了作用(WF 10.0.0.Final)

      <remote-acceptor name="stomp-acceptor" socket-binding="messaging-stomp">
         <param name="protocols" value="STOMP"/>
         <param name="connection-ttl" value="30000"/>
         <param name="stomp-enable-message-id" value="true"/>
      </remote-acceptor>
      ...
      <socket-binding name="messaging-stomp" port="61613"/>
      

      【讨论】:

      • 你把这些放在文件的哪个部分了?
      • 文件:$WF_HOME/standalone/configuration/standalone-xxxx.xml 这是添加的 2 个 sn-ps 的 xpath:1) /server[1]/profile[1]/subsystem[19 ]/server[1]/remote-acceptor[1] 2) /server[1]/socket-binding-group[1]/socket-binding[10]
      猜你喜欢
      • 1970-01-01
      • 2020-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多