1 2 Previous Next 15 Replies Latest reply on Jul 27, 2015 6:03 PM by clebert.suconic Go to original post
      • 15. Re: Inconsistant results from QueueBrowser.getEnumeration()
        emersonsiegaciss

        Hi,

         

        I have the same problem as David. I tried to configure the consumerWindowSize property, but it still don't working.

         

        Follow my configurations:

        standalone.xml:

        <subsystem xmlns="urn:jboss:domain:messaging:2.0">

                    <hornetq-server>

                        <persistence-enabled>true</persistence-enabled>

                        <journal-file-size>102400</journal-file-size>

                        <journal-min-files>2</journal-min-files>

         

                        <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 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>

         

                        <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>

                                <redelivery-delay>0</redelivery-delay>

                                <max-size-bytes>10485760</max-size-bytes>

                                <page-size-bytes>2097152</page-size-bytes>

                                <address-full-policy>PAGE</address-full-policy>

                                <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>

                                <consumer-window-size>0</consumer-window-size>

                            </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="orderDuplicateQueue">

                                <entry name="jms/queue/orderDuplicateQueue"/>

                                <entry name="java:jboss/jms/queue/orderDuplicateQueue"/>

                            </jms-queue>

                            <jms-queue name="orderDownloadQueue">

                                <entry name="jms/queue/orderDownloadQueue"/>

                                <entry name="java:jboss/jms/queue/orderDownloadQueue"/>

                            </jms-queue>

                        </jms-destinations>

                    </hornetq-server>

                </subsystem>

         

        QueueBrowser:

          List<OrderManager> list = new ArrayList<>();

          Connection connection = null;

          Session session = null;

          connection = ((ConnectionFactory) new InitialContext().lookup("java:/ConnectionFactory")).createConnection();

          session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

         

          Queue queue = (Queue) new InitialContext().lookup("jms/queue/orderDuplicateQueue");

          QueueBrowser browser = session.createBrowser(queue);

         

          @SuppressWarnings("rawtypes")

          Enumeration messageEnum = browser.getEnumeration();

         

          while (messageEnum.hasMoreElements()) {

             Message nextElement = (Message) messageEnum.nextElement();

             OrderManager order = nextElement.getBody(OrderManager.class);

             order.set_id(nextElement.getJMSMessageID());

             list.add(order);

          }

          browser.close();

          return list;

         

        MessageListener:

        @MessageDriven(name = "MessageMDBOrderDuplicateQueu", activationConfig = {

          @ActivationConfigProperty(propertyName = "maxSession", propertyValue = "3"),

          @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"),

          @ActivationConfigProperty(propertyName = "destination", propertyValue = "/jms/queue/orderDuplicateQueue"),

          @ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge"),

          @ActivationConfigProperty(propertyName = "clientFailureCheckPeriod", propertyValue = "600000"),

          @ActivationConfigProperty(propertyName = "connectionTTL", propertyValue = "-1"),

          @ActivationConfigProperty(propertyName = "consumerWindowSize", propertyValue = "0") })

        public class OrderDuplicateMDB implements MessageListener {

           ...

        }

        • 16. Re: Inconsistant results from QueueBrowser.getEnumeration()
          clebert.suconic

          I haven't followed your whole discussions, but if you have a consumer acking at the same time you're browsing you can't guarantee browser to receive all the messages. Use a proper topic subscription for that. A message server can't guarantee delivery to a browser with the same semantics as a topic subscription. it simply won't work on any system I know.

          1 2 Previous Next