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

我怎样才能修复一个新的actiemq-artemis安装阻塞问题?

慕容成文
2023-03-14

我的任务是为JMS客户机评估activemq artemis。我有RabbmitMQ的经验,但没有使用activemq artemis/JMS的经验。

我在本地机器上安装了artemis,按照说明创建了一个新的代理,并将其设置为windows服务。windows服务可以正常启动和停止。我没有对经纪人做任何改变。xml文件。

在我的第一个测试中,我试图从一个独立的java程序执行JMS队列生成/使用。我正在使用Artemis用户手册中使用JMS部分的代码(不使用JNDI):

TransportConfiguration transportConfiguration = new TransportConfiguration(NettyConnectorFactory.class.getName());
ConnectionFactory cf = ActiveMQJMSClient.createConnectionFactoryWithoutHA(JMSFactoryType.CF,transportConfiguration);

Queue orderQueue = ActiveMQJMSClient.createQueue("OrderQueue");
Connection connection = cf.createConnection();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

MessageProducer producer = session.createProducer(orderQueue);
MessageConsumer consumer = session.createConsumer(orderQueue);

connection.start();

TextMessage message = session.createTextMessage("This is an order");
producer.send(message);

TextMessage receivedMessage = (TextMessage)consumer.receive();
System.out.println("Got order: " + receivedMessage.getText());

当我运行此代码时,我得到以下错误:

警告:AMQ212054:目标地址=jms。队列OrderQueue被阻止。如果系统配置为阻止,请确保使用此配置上的消息。

我的研究还没有得出结论,这是服务器端设置,还是让制作人在不阻塞的情况下发送。我还没有找到一个producer send方法,它有一个阻塞布尔值,只有持久性。有没有关于关注点的想法?谢谢

编辑:添加到代理的新地址设置元素。专用于此队列的xml:

<address-setting match="jms.queue.OrderQueue">
            <max-size-bytes>104857600</max-size-bytes>
            <page-size-bytes>10485760</page-size-bytes>
            <address-full-policy>PAGE</address-full-policy>
</address-setting>

共有2个答案

郎睿
2023-03-14

当地址策略设置为块且达到内存时,会出现此警告消息。检查代理中设置的地址策略。xml。如果设置为BLOCK,则将其更改为PAGE。或者使用来自OrderQueue的挂起消息

尉迟晔
2023-03-14

我在用户手册的进一步研究中发现:

最大磁盘使用率我们应该从磁盘使用的最大数据百分比。磁盘已满时,系统将阻塞。默认值=100

并在服务启动后的日志中,尚未发布任何消息:

警告[org.apache.activemq.artemis.core.server]AMQ222210:存储使用量超出了最大磁盘使用量。系统将开始封锁生产商。

所以我认为无论我的地址设置如何,它都会开始阻塞。查看broker.xml中的max-disk-use设置,它设置为90。文档默认为100,我设置为100,没有启动日志警告,我的测试发布/子代码现在可以工作了。

 类似资料:
  • 我有“下载正在进行文件”对话框活动。当用户按下“隐藏”按钮时,活动将创建通知和隐藏进度对话框。并且当用户单击到通知时,活动显示进度对话框再次出现在活动中。我如何在按下按钮“后退”时切换活动到后退任务?

  • 有什么方法可以简化这段代码吗?我正好有一个白色的一块,想要得到它的位置 代码: 瓦片类: 件类:

  • Traceback(最近调用最后一次):文件"C:\用户\josej\AppData\本地\程序\Python\Python310\lib\站点包\mysql\连接器\abstracts.py",第553行,在配置DEFAULT_CONFIGURATION[key]KeyError:'datebase' 在处理上述异常期间,发生了另一个异常: 回溯(最近一次调用):文件“C:\Users\jose

  • 所以我有一个形式为X的矩阵,我试着读两个对角线,我读第一个,但我读第二个对角线很吃力。 为了前任。如果我给出数字2,3,4,它会输出矩阵: 2 0 0 0 3 0 0 0 4 但在这种情况下,我需要读其他对角线,但只读边中的数字,因为我已经读过数字3了。 这种情况只是当矩阵的大小是奇数时,但我也需要帮助,当它是奇数时,即使认为它会更容易,因为你只需要阅读两个对角线而不关心中间元素。 这是我到现在为