我在JBoss 5中使用持久性创建了一个队列。消息是异步使用的,所以我想要的是每次重新启动服务器时队列中已有的消息数。我可以在jmx-console上看到消息计数(屏幕附加)。我希望在我的程序中使用此消息计数。
答案 0 :(得分:4)
您可以尝试使用jmx作为@ konstantin-v-salikhov建议。
来自同一个jvm(例如来自战争):
MBeanServerConnection mbeanServer = MBeanServerLocator.locateJBoss();
ObjectName queue = new ObjectName ("jboss.messaging.destination:service=Queue,name=testQueue" );
Integer messageCount = (Integer)server.getAttribute ( queue, "MessageCount" );
System.out.println ( messageCount );
远程访问:
Hashtable<String,String> ht=new Hashtable<String,String>();
ht.put(Context.INITIAL_CONTEXT_FACTORY,"org.jboss.security.jndi.JndiLoginInitialContextFactory");
ht.put(Context.PROVIDER_URL,"localhost:1099");
ht.put(Context.SECURITY_PRINCIPAL,"admin");
ht.put(Context.SECURITY_CREDENTIALS,"admin");
Context context = new InitialContext(ht);
MBeanServerConnection mbeanServer = (MBeanServerConnection)context.lookup ( "jmx/invoker/RMIAdaptor" );
ObjectName queue = new ObjectName ("jboss.messaging.destination:service=Queue,name=testQueue" );
Integer messageCount = (Integer)server.getAttribute ( queue, "MessageCount" );
System.out.println ( messageCount );
答案 1 :(得分:1)
您可以创建QueueBrowser来查看队列中的消息。 http://docs.oracle.com/javaee/7/api/javax/jms/QueueBrowser.html