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