为什么我的消息驱动Bean会停止处理消息?

时间:2011-03-30 15:06:17

标签: java ejb-3.0

当服务器启动时,我可以看到它检查消息,但有时它不会尝试再抓取消息。

我没有密切监视它以确切知道确切的时间,但我知道它甚至都没有尝试检查,因为我在调试模式下有它并且我根本没有看到消息命令被执行;此外,排队的消息不会被消息驱动抓取。

这是我的ejb-jar.xml:

<?xml version="1.0" encoding="UTF-8"?>
<ejb-jar id="ejb-jar_ID"
         version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
                             http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd">
 <display-name>MessageEJB</display-name>
 <enterprise-beans>
  <message-driven>
   <display-name>MessageBean</display-name>
   <ejb-name>MessageBean</ejb-name>
   <ejb-class>com.ecomm.ejb.mdb.MessageBean</ejb-class>
   <messaging-type>javax.jms.MessageListener</messaging-type> 
   <transaction-type>Container</transaction-type>
   <message-destination-type>javax.jms.Queue</message-destination-type>
   <activation-config>
    <activation-config-property>
     <activation-config-property-name>destinationType</activation-config-property-name>
     <activation-config-property-value>javax.jms.Queue</activation-config-property-value>
    </activation-config-property>
    <activation-config-property>
     <activation-config-property-name>destination</activation-config-property-name>
     <activation-config-property-value>/queue/ExpiryQueue</activation-config-property-value>
    </activation-config-property>
   </activation-config>
  </message-driven>
 </enterprise-beans>

和jboss.xml:

<?xml version="1.0"?>
<jboss>
 <enterprise-beans>
  <message-driven>
   <ejb-name>MessageBean</ejb-name>
   <destination-jndi-name>/queue/ExpiryQueue</destination-jndi-name>
   <resource-ref>
    <res-ref-name>MessageBean</res-ref-name>
    <jndi-name>/queue/ExpiryQueue</jndi-name>
   </resource-ref>
  </message-driven>
 </enterprise-beans>
</jboss>

和ejb:

/**
 * Message-Driven Bean implementation class for: MeaageBean
 *
 */
@MessageDriven(
    mappedName = "/queue/ExpiryQueue",
    activationConfig = {
        @ActivationConfigProperty(
            propertyName = "acknowledgeMode",
            propertyValue = "Auto-acknowledge"
        ),
        @ActivationConfigProperty(
            propertyName = "destinationType",
            propertyValue = "javax.jms.Queue"
        )
    }
)
public class MessageBean implements MessageListener {

1 个答案:

答案 0 :(得分:0)

Haii,

我是MessageListener的初学者,但我有自己完美的实现...... 我使用Jboss 5.1和hornetq 我想你的实现中缺少一个注释.... 也许这一个:

@ActivationConfigProperty(propertyName = "destination", propertyValue = "queue/ExpiryQueue")

但在这种情况下,我不知道为什么有时可以传递信息....

我希望这对U和

有所帮助