2016-06-09 2 views
0

У меня есть кластер Wildfly в режиме домена с двумя узлами, каждый с одним сервером, принадлежащим к той же группе серверов.Wildfly Domain shared Тема с HornetQ

Мне нужна общая тема: когда клиент подписывается на тему сервера А, он также должен быть уведомлен сообщениями, поставленными сервером B по той же теме. В настоящий момент каждый клиент уведомляется только о сервере, к которому подключен.

Я использую машины AWS с Linux, и я не могу использовать многоадресные адреса, поэтому я использую точечный протокол, объясняющий все адреса хостов. Это мой domain.xml

<subsystem xmlns="urn:jboss:domain:messaging:2.0"> 
       <hornetq-server> 
        <cluster-password>mypassword</cluster-password> 
        <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> 
         <http-connector name="cnode1" socket-binding="node1"> 
          <param key="http-upgrade-endpoint" value="http-acceptor"/> 
         </http-connector> 
         <http-connector name="cnode2" socket-binding="node2"> 
          <param key="http-upgrade-endpoint" value="http-acceptor"/> 
         </http-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> 
         <in-vm-acceptor name="in-vm" server-id="0"/> 
        </acceptors> 

        <cluster-connections> 
         <cluster-connection name="my-cluster"> 
          <address>jms</address> 
          <connector-ref>http-connector</connector-ref> 
          <static-connectors> 
           <connector-ref> 
            cnode1 
           </connector-ref> 
           <connector-ref> 
            cnode2 
           </connector-ref> 
          </static-connectors> 
         </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:/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> 
          <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-topic name="MyNotificationTopic"> 
          <entry name="java:/jms/topic/MyNotificationTopic"/> 
         </jms-topic> 
         ... 
        </jms-destinations> 
       </hornetq-server> 
      </subsystem> 
... 
<socket-binding-group name="full-ha-sockets" default-interface="public"> 
      <socket-binding name="management-http" interface="management" port="${jboss.management.http.port:9990}"/> 
      ... 
      <outbound-socket-binding name="mail-smtp"> 
       <remote-destination host="localhost" port="25"/> 
      </outbound-socket-binding> 
      <outbound-socket-binding name="node1"> 
       <remote-destination host="172.19.223.x" port="8080"/> 
      </outbound-socket-binding> 
      <outbound-socket-binding name="node2"> 
       <remote-destination host="172.19.223.y" port="8080"/> 
      </outbound-socket-binding> 
     </socket-binding-group> 
    </socket-binding-groups> 
+0

Я пробовал ОДНУЮ конфигурацию на машинах серверов Windows, и это сработало! Но я не могу заставить их работать на машинах linux (AWS) – Wallkan

ответ

1

убедитесь, что первая исходящий сокетом-связывающей декларация относится к узлу с контроллером домена (имеется в виде контроллер домена должен работать на 172.19.223.x, в конфигурации) , Я не знаю причину, может быть, это ошибка в wildfly, мы потратили две недели на эту проблему, и она по-прежнему беспокоит меня ...

+0

Спасибо большое! – Wallkan

Смежные вопросы