Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从JBoss JMS队列检索消息_Java_Jboss_Jms - Fatal编程技术网

Java 从JBoss JMS队列检索消息

Java 从JBoss JMS队列检索消息,java,jboss,jms,Java,Jboss,Jms,如何检索JMS队列中的消息?我正在研究这个解决方案:,但它只是立即发送和接收。如果服务器重新启动,如何使用Java代码检索消息 我没有在网上找到任何东西;当然,除非我完全误解了JMS队列的工作原理。当前版本的JBoss使用HornetQ进行JMS消息传递 如果您使用的是Java JMS客户机代码,并且连接到集群消息传递代理实例,那么您的客户机应该故障切换到另一个节点 在单实例代理配置中,客户机代码中将出现JMS异常。这意味着您需要获得新连接并启动新会话 要浏览队列,请执行以下操作: /** *

如何检索JMS队列中的消息?我正在研究这个解决方案:,但它只是立即发送和接收。如果服务器重新启动,如何使用Java代码检索消息


我没有在网上找到任何东西;当然,除非我完全误解了JMS队列的工作原理。

当前版本的JBoss使用HornetQ进行JMS消息传递

如果您使用的是Java JMS客户机代码,并且连接到集群消息传递代理实例,那么您的客户机应该故障切换到另一个节点

在单实例代理配置中,客户机代码中将出现JMS异常。这意味着您需要获得新连接并启动新会话

要浏览队列,请执行以下操作:

/**
 * QueueBrowserGss.java
 * 
 * Created on Sep 24, 2012, 3:52:28 PM
 *
 * To the extent possible under law, Red Hat, Inc. has dedicated all copyright to this 
 * software to the public domain worldwide, pursuant to the CC0 Public Domain Dedication. This 
 * software is distributed without any warranty.  
 *
 * See <http://creativecommons.org/publicdomain/zero/1.0/>.
 *
 */
package com.redhat.gss.client;

import java.util.ArrayList;
import java.util.Date;
import java.util.Enumeration;
import java.util.List;
import java.util.Properties;

import javax.jms.JMSException;
import javax.jms.Queue;
import javax.jms.QueueBrowser;
import javax.jms.QueueConnection;
import javax.jms.QueueConnectionFactory;
import javax.jms.QueueSession;
import javax.jms.Session;
import javax.naming.Context;
import javax.naming.InitialContext;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

/**
 * @author grovedc
 * 
 */
public class QueueBrowserGss {
    private static final Log logger = LogFactory.getLog(QueueBrowserGss.class);

    @SuppressWarnings("unchecked")
    public static void main(String[] args) {
        QueueConnection queueConnection = null;
        Queue queue = null;
        QueueConnectionFactory queueConnFactory = null;
        QueueBrowser queueBrowser = null;
        QueueSession queueSession = null;

        List<Object> messages = new ArrayList<Object>(7000);

        Properties properties = new Properties();
        properties.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
        properties.put(Context.URL_PKG_PREFIXES, "org.jboss.naming:org.jnp.interfaces");
        // properties.put(Context.PROVIDER_URL, "jnp://" + server + ":" + port);
        properties.put("Context.PROVIDER_URL", "jnp://10.0.0.150:1100");

        try {
            InitialContext ctx = new InitialContext(properties);
            queue = (Queue) ctx.lookup("queue/D");
            queueConnFactory = (QueueConnectionFactory) ctx.lookup("ConnectionFactory");

            queueConnection = queueConnFactory.createQueueConnection();
            queueSession = queueConnection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
            queueBrowser = queueSession.createBrowser(queue);
            queueConnection.start();

            for (Enumeration<Object> e = queueBrowser.getEnumeration(); e.hasMoreElements();) {
                  messages.add(e.nextElement());
            }

            logger.info("Messages are retrieved from queue. Process completed on: " + new Date());
            logger.info("Number of Messages present: " + messages.size());

        } catch (Exception ex) {
            logger.error(String.format("Exception Occured : %s", ex.getMessage()),  ex);
        } finally {
            try {
                if (queueConnection != null)
                    queueConnection.stop();
            } catch (JMSException e) {
                logger.error(e);
            }
        }
    }
}
/**
*QueueBrowserGss.java
* 
*创建于2012年9月24日下午3:52:28
*
*在法律允许的范围内,Red Hat,Inc.已将所有版权专用于此
*根据CC0公共领域奉献,软件将在全球范围内公开。这
*软件的分发没有任何保证。
*
*看。
*
*/
包com.redhat.gss.client;
导入java.util.ArrayList;
导入java.util.Date;
导入java.util.Enumeration;
导入java.util.List;
导入java.util.Properties;
导入javax.jms.jmsception;
导入javax.jms.Queue;
导入javax.jms.QueueBrowser;
导入javax.jms.QueueConnection;
导入javax.jms.QueueConnectionFactory;
导入javax.jms.QueueSession;
导入javax.jms.Session;
导入javax.naming.Context;
导入javax.naming.InitialContext;
导入org.apache.commons.logging.Log;
导入org.apache.commons.logging.LogFactory;
/**
*@author-grovedc
* 
*/
公共类队列浏览器{
私有静态最终日志记录器=LogFactory.getLog(QueueBrowserGss.class);
@抑制警告(“未选中”)
公共静态void main(字符串[]args){
QueueConnection-QueueConnection=null;
队列=null;
QueueConnectionFactory queueConnFactory=null;
QueueBrowser-QueueBrowser=null;
QueueSession QueueSession=null;
列表消息=新的ArrayList(7000);
属性=新属性();
properties.put(Context.INITIAL_Context_FACTORY,“org.jnp.interfaces.NamingContextFactory”);
properties.put(Context.URL_PKG_前缀,“org.jboss.naming:org.jnp.interfaces”);
//properties.put(Context.PROVIDER_URL,“jnp://”+server+:“+port);
properties.put(“Context.PROVIDER\uURL”jnp://10.0.0.150:1100");
试一试{
InitialContext ctx=新的InitialContext(属性);
queue=(queue)ctx.lookup(“queue/D”);
queueConnFactory=(QueueConnectionFactory)ctx.lookup(“ConnectionFactory”);
queueConnection=queueConnFactory.createQueueConnection();
queueSession=queueConnection.createQueueSession(false,Session.AUTO_ACKNOWLEDGE);
queueBrowser=queueSession.createBrowser(队列);
queueConnection.start();
对于(枚举e=queueBrowser.getEnumeration();e.hasMoreElements();){
messages.add(e.nextElement());
}
logger.info(“从队列中检索消息。进程在:“+new Date()”)完成);
logger.info(“存在的消息数:+Messages.size());
}捕获(例外情况除外){
logger.error(String.format(“发生异常:%s”,例如getMessage()),例如);
}最后{
试一试{
if(queueConnection!=null)
queueConnection.stop();
}捕获(JME){
错误(e);
}
}
}
}

jnp协议和端口用于JBoss消息传递。

当前版本的JBoss使用HornetQ进行JMS消息传递

如果您使用的是Java JMS客户机代码,并且连接到集群消息传递代理实例,那么您的客户机应该故障切换到另一个节点

在单实例代理配置中,客户机代码中将出现JMS异常。这意味着您需要获得新连接并启动新会话

要浏览队列,请执行以下操作:

/**
 * QueueBrowserGss.java
 * 
 * Created on Sep 24, 2012, 3:52:28 PM
 *
 * To the extent possible under law, Red Hat, Inc. has dedicated all copyright to this 
 * software to the public domain worldwide, pursuant to the CC0 Public Domain Dedication. This 
 * software is distributed without any warranty.  
 *
 * See <http://creativecommons.org/publicdomain/zero/1.0/>.
 *
 */
package com.redhat.gss.client;

import java.util.ArrayList;
import java.util.Date;
import java.util.Enumeration;
import java.util.List;
import java.util.Properties;

import javax.jms.JMSException;
import javax.jms.Queue;
import javax.jms.QueueBrowser;
import javax.jms.QueueConnection;
import javax.jms.QueueConnectionFactory;
import javax.jms.QueueSession;
import javax.jms.Session;
import javax.naming.Context;
import javax.naming.InitialContext;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

/**
 * @author grovedc
 * 
 */
public class QueueBrowserGss {
    private static final Log logger = LogFactory.getLog(QueueBrowserGss.class);

    @SuppressWarnings("unchecked")
    public static void main(String[] args) {
        QueueConnection queueConnection = null;
        Queue queue = null;
        QueueConnectionFactory queueConnFactory = null;
        QueueBrowser queueBrowser = null;
        QueueSession queueSession = null;

        List<Object> messages = new ArrayList<Object>(7000);

        Properties properties = new Properties();
        properties.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
        properties.put(Context.URL_PKG_PREFIXES, "org.jboss.naming:org.jnp.interfaces");
        // properties.put(Context.PROVIDER_URL, "jnp://" + server + ":" + port);
        properties.put("Context.PROVIDER_URL", "jnp://10.0.0.150:1100");

        try {
            InitialContext ctx = new InitialContext(properties);
            queue = (Queue) ctx.lookup("queue/D");
            queueConnFactory = (QueueConnectionFactory) ctx.lookup("ConnectionFactory");

            queueConnection = queueConnFactory.createQueueConnection();
            queueSession = queueConnection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
            queueBrowser = queueSession.createBrowser(queue);
            queueConnection.start();

            for (Enumeration<Object> e = queueBrowser.getEnumeration(); e.hasMoreElements();) {
                  messages.add(e.nextElement());
            }

            logger.info("Messages are retrieved from queue. Process completed on: " + new Date());
            logger.info("Number of Messages present: " + messages.size());

        } catch (Exception ex) {
            logger.error(String.format("Exception Occured : %s", ex.getMessage()),  ex);
        } finally {
            try {
                if (queueConnection != null)
                    queueConnection.stop();
            } catch (JMSException e) {
                logger.error(e);
            }
        }
    }
}
/**
*QueueBrowserGss.java
* 
*创建于2012年9月24日下午3:52:28
*
*在法律允许的范围内,Red Hat,Inc.已将所有版权专用于此
*根据CC0公共领域奉献,软件将在全球范围内公开。这
*软件的分发没有任何保证。
*
*看。
*
*/
包com.redhat.gss.client;
导入java.util.ArrayList;
导入java.util.Date;
导入java.util.Enumeration;
导入java.util.List;
导入java.util.Properties;
导入javax.jms.jmsception;
导入javax.jms.Queue;
导入javax.jms.QueueBrowser;
导入javax.jms.QueueConnection;
导入javax.jms.QueueConnectionFactory;
导入javax.jms.QueueSession;
导入javax.jms.Session;
导入javax.naming.Context;
导入javax.naming.InitialContext;
导入org.apache.commons.logging.Log;
导入org.apache.commons.logging.LogFactory;
/**
*@author-grovedc
* 
*/
公共类队列浏览器{
私有静态最终日志记录器=LogFactory.getLog(QueueBrowserGss.class);
@抑制警告(“未选中”)
公共静态void main(字符串[]args){
QueueConnection-QueueConnection=null;
队列=null;
QueueConnectionFactory queueConnFactory=null;
QueueBrowser-QueueBrowser=null;
QueueSession QueueSession=null;
列表消息=新的ArrayList(7000);
属性=新属性();
properties.put(Context.INITIAL_Context_FACTORY,“org.jnp.interfaces.NamingContextFactory”);
properties.put(Context.URL_PKG_前缀,“org.jboss.naming:org.jnp.interfaces”);
//properties.put(Context.PROVIDER_URL,“jnp://”+server+:“+port);
properties.put(“Context.PROVIDER\uURL”jnp://10.0.0.150:1100");
试一试{
InitialContext ctx=新的InitialC