访问ActiveMQ时,Open Liberty 19.0.0.3中的消息驱动Bean不会激活

问题描述 投票:0回答:1

我有一个OpenLiberty应用程序服务器通过资源适配器访问Active MQ 5.15.18,但是我无法正确配置激活规范,因此在新消息进入时会激活MDB。

应用程序能够将消息放入输出队列,但是,当新消息到达输入队列时,MDB不会被激活。相同的代码适用于嵌入式本地提供程序上的本地创建的队列(WLP作为JMS服务器,不涉及ActiveMQ)。

我已经尝试了几个代码片段樱桃挑选堆栈溢出,我的问题似乎非常像WebSphere Liberty ActiveMQ但相同的食谱不适合我。

这是我的MDB代码:

@MessageDriven(name = "MyMDB",
        activationConfig = {  
           @ActivationConfigProperty(propertyName="destinationType", propertyValue="javax.jms.Queue"),  
           @ActivationConfigProperty(propertyName="destination", propertyValue="APP1_QIN"),  
           @ActivationConfigProperty(propertyName="acknowledgeMode", propertyValue="Auto-acknowledge")  
        })
public class MyMDB implements MessageListener {

    @PostConstruct
    public void postConstruct() {
        System.out.println("Init MDB");
    }

    @Override
    public void onMessage(Message message) {
        System.out.println("Message received in MDB: " + message);
    }

    @Resource
    MessageDrivenContext ejbcontext;
    @SuppressWarnings("unused")
    private void setMessageDrivenContext(EJBContext ejbcontext) {
    }

}

在我的server.xml下面:

<server description="defaultServer">
    <featureManager>
        <feature>webProfile-7.0</feature>
        <feature>localConnector-1.0</feature>
        <feature>wasJmsClient-2.0</feature>
        <feature>jca-1.7</feature>
    </featureManager>

    ...

    <resourceAdapter id="ActiveMQResourceAdapter" location="/path/to/libs/activemq-rar-5.15.8.rar">
        <properties.ActiveMQResourceAdapter ServerUrl="tcp://localhost:61616" />
    </resourceAdapter>

    <jmsQueueConnectionFactory connectionManagerRef="QueueConnMgr" jndiName="jms/QCF">  
        <properties.ActiveMQResourceAdapter />      
    </jmsQueueConnectionFactory>    

    <jmsQueue id="APP1_QIN" jndiName="jms/APP1_QIN">
        <properties.ActiveMQResourceAdapter PhysicalName="APP1_QIN" />
    </jmsQueue>

    <jmsQueue id="APP1_QOUT" jndiName="jms/APP1_QOUT">
        <properties.ActiveMQResourceAdapter PhysicalName="APP1_QOUT" />
    </jmsQueue>

     <jmsActivationSpec id="MyMDB">     
        <properties.ActiveMQResourceAdapter/> <!--  destination="APP1_QIN"   -->
    </jmsActivationSpec>

    <connectionManager id="QueueConnMgr" maxPoolSize="5"/>
</server>

我希望MDB在消息进入后立即正确激活,但事实并非如此。此外,查看ActiveMQ控制台,此队列似乎没有消费者。

有任何想法吗?

java java-ee activemq websphere-liberty message-driven-bean
1个回答
0
投票

看起来您的AS id可能不正确,它应该采用以下形式:<activationSpec id="app1/module1/MyMessageDrivenBean">,其中包含应用程序,模块和消息驱动bean的正确名称。

在这里查看更多有关配置AS的详细信息Configuring JCA activation specifications

© www.soinside.com 2019 - 2024. All rights reserved.