如何在ActiveMQ Artemis中更改minLargeMes​​sageSize?

时间:2018-04-26 16:09:36

标签: activemq activemq-artemis

我有一个具有日记功能的ActiveMQ ARTEMIS的集群环境。由于其中一个消费者无法使用Artemis-JMS客户端jar,我使用ActiveMQ 5.11(Java 1.7)的客户端库来读取消息。这适用于小消息。由于某种原因,消费者(第三方产品)如果被分块(和流式传输),则无法读取大型消息。我们在之前的环境HornetQ中获得了大量消息的成功。

所以我的想法是通过更改一些参数找到解决方法。但我没有任何成功。限制为100 KiB(?)双字节。 如何将此限制更改为5 MB? 我可以设置certian队列中允许的MessageType吗?只有TextMessage / ByteMessage?

我不希望Artemis将5 MB以下的邮件视为大邮件。 TextMessage,ByteMessage应该没问题。不是StreamMessage,因为它似乎不受支持。

我看过如下设置:JMS Bridge:min-large-message-size限制在消息被认为是大的之前。默认100KB群集连接类型:

min-large-message-size大于此的消息被视为大消息,默认值= 100KB

我会在客户端更改它,如: 从手册(我在哪里做以及如何做?它也是一个集群)

  

使用JMS如果使用JNDI来实例化并查找连接   在工厂中,在JNDI中配置了最小的大消息大小   上下文环境,例如jndi.properties。这是一个简单的例子   使用可用的“ConnectionFactory”连接工厂   默认情况下的上下文:

     

java.naming.factory.initial的= org.apache.activemq.artemis.jndi.ActiveMQInitialContextFactory   connectionFactory.myConnectionFactory = TCP://本地主机:61616 minLargeMes​​sageSize = 250000   如果直接实例化连接工厂,则最小化   大邮件大小由。指定   ActiveMQConnectionFactory.setMinLargeMes​​sageSize。

     

配置客户端

     

任何大于特定大小的邮件都被视为大邮件。   大邮件将被拆分并以片段形式发送。这是   由URL参数minLargeMes​​sageSize

确定      

请注意

     

** Apache ActiveMQ Artemis消息使用每个2字节进行编码   如果消息数据填充了ASCII字符,则为字符   (这是1个字节)得到的Apache ActiveMQ Artemis的大小   消息大概加倍。这在计算时非常重要   “大”消息的大小,因为它可能看起来小于   minLargeMes​​sageSize在发送之前,但它变成了一个   “大”消息一旦被编码。

     

默认值为100KiB。**

     

直接从客户端配置传输将提供   有关如何实例化核心会话工厂或JMS的更多信息   连接工厂。

非常适合您的想法。

/齐格

0 个答案:

没有答案