当前位置: 首页 > 知识库问答 >
问题:

在ActiveMQ jmsActivationSpec未触发的情况下打开Liberty JMS

程皓轩
2023-03-14

我正在尝试使用activeMq作为具有开放自由的JMS的代理。我设法在队列中获取消息,但我的激活规范从未触发。我在日志中读到了以下内容。

[25/07/20 18:13:51:857 CEST] 00000330 com.ibm.ws.ejbcontainer.runtime.AbstractEJBRuntime           I CNTR0180I: The FailedKalenderUpdateProcessor message-driven bean in the typedagkalender-backend.jar module of the typedagkalender-ear application is bound to the jms/typedagkalender/kalenderupdates/dlqueueAS activation specification.
[25/07/20 18:13:51:857 CEST] 00000330 com.ibm.ws.jca.cm.ConnectorService                           I J2CA8050I: An authentication alias should be used instead of defining a user name and password on jms/typedagkalender/kalenderupdates/dlqueueAS.
[25/07/20 18:13:51:858 CEST] 00000330 SystemOut                                                    O 2020-07-25 18:13:51,858 [utor-thread-692] INFO  ActiveMQEndpointWorker         - Starting
[25/07/20 18:13:51:858 CEST] 00000330 com.ibm.ws.jca.service.EndpointActivationService             I J2CA8801I: The message endpoint for activation specification jms/typedagkalender/kalenderupdates/dlqueueAS and message driven bean application typedagkalender-ear#typedagkalender-backend.jar#FailedKalenderUpdateProcessor is activated.
[25/07/20 18:13:51:858 CEST] 00000330 com.ibm.ws.ejbcontainer.runtime.AbstractEJBRuntime           I CNTR0180I: The KalenderUpdateProcessor message-driven bean in the typedagkalender-backend.jar module of the typedagkalender-ear application is bound to the jms/typedagkalender/kalenderupdates/queueAS activation specification.
[25/07/20 18:13:51:858 CEST] 000002cb SystemOut                                                    O 2020-07-25 18:13:51,858 [utor-thread-591] INFO  ActiveMQEndpointWorker         - Establishing connection to broker [tcp://localhost:61616]
[25/07/20 18:13:51:858 CEST] 00000330 com.ibm.ws.jca.cm.ConnectorService                           I J2CA8050I: An authentication alias should be used instead of defining a user name and password on jms/typedagkalender/kalenderupdates/queueAS.
[25/07/20 18:13:51:860 CEST] 00000330 SystemOut                                                    O 2020-07-25 18:13:51,859 [utor-thread-692] INFO  ActiveMQEndpointWorker         - Starting
[25/07/20 18:13:51:860 CEST] 00000330 com.ibm.ws.jca.service.EndpointActivationService             I J2CA8801I: The message endpoint for activation specification jms/typedagkalender/kalenderupdates/queueAS and message driven bean application typedagkalender-ear#typedagkalender-backend.jar#KalenderUpdateProcessor is activated.
[25/07/20 18:13:51:860 CEST] 0000032b SystemOut                                                    O 2020-07-25 18:13:51,860 [utor-thread-687] INFO  ActiveMQEndpointWorker         - Establishing connection to broker [tcp://localhost:61616]
[25/07/20 18:13:51:870 CEST] 000002cb SystemOut                                                    O 2020-07-25 18:13:51,870 [utor-thread-591] INFO  ActiveMQEndpointWorker         - Successfully established connection to broker [tcp://localhost:61616]
[25/07/20 18:13:51:871 CEST] 0000032b SystemOut                                                    O 2020-07-25 18:13:51,870 [utor-thread-687] INFO  ActiveMQEndpointWorker         - Successfully established connection to broker [tcp://localhost:61616]

这是我的server.xml配置jms部分

<?xml version="1.0" encoding="UTF-8"?>
<server>
    <!-- JMS CONFIGURATION -->
    <resourceAdapter id="ActiveMQResourceAdapter" location="${server.config.dir}/resources/lib/resource-adapter/activemq-rar-5.16.0.rar">
      <properties.activemq ServerUrl="tcp://localhost:61616" />
    </resourceAdapter>

    <messagingEngine>
        <queue id="Typedagkalender_destination" />
        <queue id="_SYSTEM.Exception.Destination" />
    </messagingEngine>

    <jmsQueueConnectionFactory jndiName="jms/typedagkalender/kalenderupdates/queueCF" connectionManagerRef="ConMgr">
        <properties.ActiveMQResourceAdapter />
    </jmsQueueConnectionFactory> -->

    <connectionManager id="ConMgr" maxPoolSize="${jms.ConMgr.maxPoolSize}" />

    <jmsQueue id="jms/typedagkalender/kalenderupdates/queue" jndiName="jms/typedagkalender/kalenderupdates/queue">
        <properties.ActiveMQResourceAdapter PhysicalName="Typedagkalender_destination" />
    </jmsQueue>
    <jmsQueue id="jms/typedagkalender/kalenderupdates/dlqueue" jndiName="jms/typedagkalender/kalenderupdates/dlqueue">
        <properties.ActiveMQResourceAdapter PhysicalName="_SYSTEM.Exception.Destination" />
    </jmsQueue>

    <jmsActivationSpec id="jms/typedagkalender/kalenderupdates/queueAS">
        <properties.ActiveMQResourceAdapter destinationType="javax.jms.Queue" destination="jms/typedagkalender/kalenderupdates/queue" />
    </jmsActivationSpec>
    <jmsActivationSpec id="jms/typedagkalender/kalenderupdates/dlqueueAS">
        <properties.ActiveMQResourceAdapter destinationType="javax.jms.Queue" destination="jms/typedagkalender/kalenderupdates/dlqueue" />
    </jmsActivationSpec>
</server>
@TransactionAttribute(NOT_SUPPORTED)
@MessageDriven(mappedName = "jms/typedagkalender/kalenderupdates/queue", activationConfig = {
        @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"),
        @ActivationConfigProperty(propertyName = "destination", propertyValue = "jms/typedagkalender/kalenderupdates/queue")
})
public class KalenderUpdateProcessor implements MessageListener {

    private static final Logger LOGGER = LoggerFactory.getLogger(KalenderUpdateProcessor.class);

    @Inject
    private KalenderAbonnementService kalenderAbonnementService;

    @Override
    public void onMessage(Message message) {
        if (!(message instanceof TextMessage)) {
            LOGGER.error("Er is alleen ondersteuning voor TextMessages");
            return;
        }

        Auditor.setTimestamp(now());
        TextMessage textMessage = (TextMessage) message;

        try {
            LOGGER.debug("Textmessage gekregen voor KalenderJaargangVersieUpdate {}", textMessage.getText());
            handle(textMessage.getText());
        } catch (JMSException e) {
            LOGGER.error("Fout tijdens behandelen van message {}: {}", textMessage, e);
            throw new KalenderUpdateNotificationException("Fout tijdens behandelen van message " + textMessage, e);
        } finally {
            Auditor.destroy();
        }
    }
}

共有1个答案

常业
2023-03-14

我找到了解决方案,似乎我不能为队列使用不同的physicalname,否则它将无法工作。Well solution在这里是一个很大的词也许,也许我不得不说我没有找到一种方法使它使用不同的physicalname而是使用了相同的队列名。

<?xml version="1.0" encoding="UTF-8"?>
<server>
    <!-- JMS CONFIGURATION -->
    <resourceAdapter id="ActiveMQResourceAdapter" location="${server.config.dir}/resources/lib/resource-adapter/activemq-rar-5.16.0.rar">
        <properties.activemq ServerUrl="tcp://localhost:61616" />
    </resourceAdapter>

    <messagingEngine>
        <queue id="jms/typedagkalender/kalenderupdates/queue" />
        <queue id="jms/typedagkalender/kalenderupdates/dlqueue" />
    </messagingEngine>

    <jmsQueueConnectionFactory jndiName="jms/typedagkalender/kalenderupdates/queueCF" connectionManagerRef="ConMgr">
        <properties.ActiveMQResourceAdapter />
    </jmsQueueConnectionFactory> -->

    <connectionManager id="ConMgr" maxPoolSize="${jms.ConMgr.maxPoolSize}" />

    <jmsQueue id="jms/typedagkalender/kalenderupdates/queue" jndiName="jms/typedagkalender/kalenderupdates/queue">
        <properties.ActiveMQResourceAdapter PhysicalName="jms/typedagkalender/kalenderupdates/queue" />
    </jmsQueue>
    <jmsQueue id="jms/typedagkalender/kalenderupdates/dlqueue" jndiName="jms/typedagkalender/kalenderupdates/dlqueue">
        <properties.ActiveMQResourceAdapter PhysicalName="jms/typedagkalender/kalenderupdates/dlqueue" />
    </jmsQueue>

    <jmsActivationSpec id="jms/typedagkalender/kalenderupdates/queueAS">
        <properties.ActiveMQResourceAdapter destinationType="javax.jms.Queue" destination="jms/typedagkalender/kalenderupdates/queue" />
    </jmsActivationSpec>
    <jmsActivationSpec id="jms/typedagkalender/kalenderupdates/dlqueueAS">
        <properties.ActiveMQResourceAdapter destinationType="javax.jms.Queue" destination="jms/typedagkalender/kalenderupdates/dlqueue" />
    </jmsActivationSpec>
</server>
 类似资料:
  • 一些调查和分析表明,用户经常拒绝出现在移动应用程序中的位置权限请求,即使该权限对应用程序至关重要,例如应用程序对处理业务逻辑和与移动应用程序交换数据的场所中的设备执行自动扫描。权限请求拒绝率如此之高,以至于对业务来说是个问题。Android中有什么方法可以避免这种情况,例如声明一些经过验证的设备可以在没有权限请求的情况下进行扫描?我想到了https://developer.android.com/

  • 问题内容: 我想创建一个触发器,以防止在出生日期(列之一)将来的时候插入。我有这个: 如何取消if语句中的插入? 问题答案: 基于这一点,我不确定是否可以这样做。 MySQL当前的触发器实现中不支持自愿引发异常并中止生成触发器的语句。 我发现的解决方法是编写一个BEFORE触发器,以将表中的not-NULL列之一设置为NULL,从而违反了其NOT NULL约束。这导致产生触发器的语句被中止。

  • 问题内容: 我有一个计时器,一旦它响起,它就会运行来重新启动警报。 它的选择器功能设置一个模式标志,并调用原始功能,该功能使用新的分钟和秒常量设置警报,还向用户发送会话已重新启动的通知。 我有一个菜单项,该菜单项会更新剩余时间 因此,我一直在打开它来检查我的警报确实确实重新启动,并且一旦警报为零便显示通知。它可以工作,但是当我打开菜单并将其降低到零时,它将停留在0:00,并且直到我单击菜单后,计时

  • 问题内容: 我正在进行实验,发现以下代码可以在Eclipse上编译并正常运行(版本ID:20090920-1017,不确定确切的编译器版本): 在Eclipse中编译并运行时,此命令会正常打印并退出。 对于编译器,这将按预期方式抛出。 那么Eclipse Java编译器中有bug吗? 问题答案: 这是一个错误。这是根据 Java语言规范,第三版 的声明的指定行为: [JLS 14.11 声明](h

  • 问题是如何使用OpenCV旋转图像并保持原始尺寸。当前正在使用此功能: 此外,在warpAffine中使用了什么样的算法(Bicubic?)

  • 问题内容: 我有一个带有客户文本监视程序的字段。在一段代码中,我需要更改使用的EditText中的值。 问题是,一旦我进行更改,就会调用该方法,从而创建了无限循环。如何在不触发afterTextChanged的情况下更改文本? 我需要afterTextChanged方法中的文本,因此不建议删除。 问题答案: 您可以注销观察者,然后重新注册。 另外,您可以设置一个标志,以便观察者知道自己刚刚更改文本