0

I need to read the messages added in a Queue, just for visualization, but I never can get the messages.

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

        List<OrderManager> list = new ArrayList<>();
        Connection connection = null;
        Session session = null;

        ConnectionFactory cf =  (ConnectionFactory) new InitialContext().lookup("java:/ConnectionFactory");
        connection = cf.createConnection();
        session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

        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;

Note: After some time, I tried to comment the consumer of this Queue, then I can read all the messages. I uncommented the consumer, and can not read anymore.

The consumer configuration:

@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") }) 
public class OrderDuplicateMDB implements MessageListener {

HornetQ configuration on Wildfly 8.2 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>
                </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>
siega
  • 2,508
  • 1
  • 19
  • 22
  • I found this [link](https://developer.jboss.org/message/548297#548297) with the same problem and a solution. I tried to configure the consumerWindowSize with 0 (zero), but the problem persists. – siega Jul 27 '15 at 20:31
  • you will never be able to read the message from browser while consumer is running as it will process all messages on the fly (in your case using three parallel threads, cf. maxSession).... – Gab Jul 28 '15 at 14:54

0 Answers0