【问题标题】:Spring Boot SockJS over stomp and Apache ArtemisSpring Boot SockJS over stomp 和 Apache Artemis
【发布时间】:2017-02-07 14:03:17
【问题描述】:

我有一个使用 Spring Boot 和 SockJS over STOMP 创建的聊天应用程序,由外部 ActiveMQ 代理支持, 我的问题是,在大约 4000 个客户端连接和 10000 个 ActiveMQ 目的地之后,ActiveMQ 因与 KahaDB 相关的内存不足而崩溃。 我想切换到 Apache Artemis,因为博客提到它比 ActiveMQ 性能更好,并且可以处理更多的客户端连接,并且还实现了非阻塞。 我希望只是用 Artemis 替换 ActiveMQ,但是,我看到客户端连接并订阅主题和队列,但他们没有通过 Artemis 接收消息。

以及想法可能是什么问题? 这是我在 Artemis broker.xml 配置文件中的设置:

  <address-settings>
     <!--default for catch all-->
     <address-setting match="#">
        <dead-letter-address>jms.queue.DLQ</dead-letter-address>
        <expiry-address>jms.queue.ExpiryQueue</expiry-address>
        <redelivery-delay>0</redelivery-delay>
        <!-- with -1 only the global-max-size is in use for limiting -->
        <max-size-bytes>-1</max-size-bytes>
        <message-counter-history-day-limit>10</message-counter-history-day-limit>
        <address-full-policy>PAGE</address-full-policy>

        <auto-create-jms-queues>true</auto-create-jms-queues>
        <auto-delete-jms-queues>true</auto-delete-jms-queues>

     </address-setting>
  </address-settings>

任何帮助将不胜感激。

提前致谢。

【问题讨论】:

    标签: spring-boot stomp spring-websocket sockjs activemq-artemis


    【解决方案1】:

    使用 artemis,您应该尝试可用的最新版本(在我撰写本文时为 1.5.2)。

    您可能需要使用 Artemis 1.x 相应地更改地址名称和队列名称。 (jms.queue 和 jms.topic) 前缀。

    随着即将发布的 2.0 版本,地址模型不再需要前缀,但在当前版本中,您可能会遇到必须在应用程序中定义前缀的问题。

    随意在用户列表上开始讨论,这是贡献者最活跃的地方。

    【讨论】:

    • 感谢 Celebert 的快速回复。非常感谢。我正在使用最新版本 1.5.2。我将尝试使用 jms.queue 和 jms.topic 谓词。知道 2.0 什么时候发布吗?谢谢
    • 这就像在任何软件项目中一样......我们希望在 1 个月内完成(从我写这篇文章的那天开始,为了未来的观众)......但你知道这是怎么回事......我认为这将是 2017 年 2 月或比赛/2017 年 .. 基于还有待完成的 JIRA .. 但这是我个人的预测。
    • 非常感谢您的更新,我会密切关注 2.0 版本。
    • 我没有说一定要聚类。只是让他们分开。无需集群。只需使用多个实例。除非你需要主题。为啥不开个新帖?
    • 我可以投票或接受问题吗? :) 很高兴获得积分 :)