首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在带有EJB3.0的JBoss AS 7中获取队列详细信息?

如何在带有EJB3.0的JBoss AS 7中获取队列详细信息?
EN

Stack Overflow用户
提问于 2015-10-17 03:19:20
回答 1查看 818关注 0票数 0

我在JMS项目中工作,我们使用消息驱动beans (@MessageDriven)和服务器是JBoss 7。我们在会话中添加作业,为此我们添加了JmsProducer和JmsConsumer。现在我们想要获取当前队列的状态(比如当前队列计数、等待计数、顺序、优先级)。所有这些细节都在JmsProducer中设置。

我们尝试使用命令行界面脚本和JBoss管理控制台来获取这些详细信息。Cli方法的工作原理如下所示。

使用的队列为HornetQ。

代码语言:javascript
复制
  "address" => [ 
     ("subsystem" => "messaging"), 
     ("hornetq-server" => "default"), 
     ("jms-queue" => "transmit_postprocessing") 
 ],
 "outcome" => "success",
 "result" => { 
     "consumer-count" => 1, 
     "dead-letter-address" => "jms.queue.DLQ", 
     "delivering-count" => 0, 
     "durable" => true, 
     "entries" => ["java:jboss/queue/transmit_postprocessing"], 
     "expiry-address" => "jms.queue.ExpiryQueue", 
     "message-count" => 0L, 
     "messages-added" => 4L, 
     "paused" => false, 
     "queue-address" => "jms.queue.transmit_postprocessing", 
     "scheduled-count" => 0L, 
     "selector" => undefined, 
     "temporary" => false 

 }

JmsProducer:(工作中)

代码语言:javascript
复制
Context context = new InitialContext(); 
ConnectionFactory connectionFactory = (ConnectionFactory)context.lookup("java:/ConnectionFactory");
Connection connection = connectionFactory.createConnection(); 
Session jmsSession = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); 
Destination destination = (Destination) context.lookup("java:jboss/queue/preprocessing"); 

MessageProducer messageProducer = jmsSession.createProducer(destination); 

ObjectMessage objectMessage = jmsSession.createObjectMessage(); 

         for (String key: payload.keySet()) { 
            String value = payload.get(key).toString();    
            objectMessage.setStringProperty(key, value); 
         }

有没有其他方法可以在JmsConsumer中获取队列详细信息?

我们之前的消费者代码现在不能工作了(可能是因为JBoss版本改到了7)。

我尝试了很多方法,但枚举总是为空(尽管会话/队列在JBoss上运行)

例如:

代码语言:javascript
复制
ConnectionFactory connectionFactory =  (ConnectionFactory)context.lookup("java:/ConnectionFactory");
Queue queue = (Queue)context.lookup("java:jboss/queue/preprocessing"); 
QueueBrowser browser = session.createBrowser(queue); 
ArrayList<QueueMessage> messages = new ArrayList<QueueMessage>(); 
Enumeration e = browser.getEnumeration();

任何可能的方法/方法/想法都是有用的。提前谢谢。

我的standalone-full.xml文件

代码语言:javascript
复制
<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="netty"/>
        </connectors>
        <entries>
            <entry name="RemoteConnectionFactory"/>
            <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"/>
        </entries>
    </pooled-connection-factory>
</jms-connection-factories>


<jms-destinations>
    <jms-queue name="testQueue">
        <entry name="queue/test"/>
        <entry name="java:jboss/exported/jms/queue/test"/>
    </jms-queue>
    <jms-queue name="preprocessing">
        <entry name="java:jboss/queue/preprocessing"/>
        <durable>true</durable>
    </jms-queue>
    <jms-queue name="processing">
        <entry name="java:jboss/queue/processing"/>
        <durable>true</durable>
    </jms-queue>
    <jms-queue name="postprocessing">
        <entry name="java:jboss/queue/postprocessing"/>
        <durable>true</durable>
    </jms-queue>
    <jms-queue name="approval_preprocessing">
        <entry name="java:jboss/queue/approval_preprocessing"/>
        <durable>true</durable>
    </jms-queue>
    <jms-queue name="approval_postprocessing">
        <entry name="java:jboss/queue/approval_postprocessing"/>
        <durable>true</durable>
    </jms-queue>
    <jms-queue name="transmit_preprocessing">
        <entry name="java:jboss/queue/transmit_preprocessing"/>
        <durable>true</durable>
    </jms-queue>
    <jms-queue name="transmit_postprocessing">
        <entry name="java:jboss/queue/transmit_postprocessing"/>
        <durable>true</durable>
    </jms-queue>
    <jms-queue name="batch">
        <entry name="java:jboss/queue/batch"/>
        <entry name="java:jboss/exported/jms/queue/batch"/>
        <durable>true</durable>
    </jms-queue>
    <jms-queue name="plmpreprocessing">
        <entry name="java:jboss/queue/plmpreprocessing"/>
        <durable>true</durable>
    </jms-queue>
    <jms-queue name="dex_delete">
        <entry name="java:jboss/queue/dex_delete"/>
        <durable>true</durable>
    </jms-queue>
    <jms-topic name="testTopic">
        <entry name="topic/test"/>
        <entry name="java:jboss/exported/jms/topic/test"/>
    </jms-topic>
</jms-destinations>

使用的引用:

http://docs.jboss.org/jbossmessaging/docs/userguide-1.2.0.GA/html/examples.html

www.mastertheboss.com/jboss-server/jboss-jms/monitoring-jms-resources-with-jboss-as-7

https://docs.jboss.org/author/display/AS71/Messaging+configuration

EN

回答 1

Stack Overflow用户

发布于 2015-10-22 19:18:02

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33178083

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档