use*_*118 5 jms activemq-artemis
我的任务是为JMS客户评估ActiveMQ Artemis.我有RabbmitMQ经验,但没有使用ActiveMA Artemis/JMS.
我在我的本地机器上安装了Artemis,根据说明创建了一个新的代理,并将其设置为Windows服务.Windows服务启动和停止就好了.我没有对broker.xml文件进行任何更改.
对于我的第一次测试,我正在尝试从独立的Java程序执行JMS Queue生成/使用.我正在使用"使用JMS"部分中的Artemis用户手册中的代码(不使用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());
Run Code Online (Sandbox Code Playgroud)
当我运行此代码时,我收到以下错误:
警告:AMQ212054:目标地址= jms.queue.OrderQueue被阻止.如果系统配置为阻止,请确保使用此配置上的消息.
如果这是服务器端设置,或者生产者发送没有阻塞,我的研究还没有定论.我一直无法找到一个具有阻塞布尔值的生成器发送方法,只有持久性.关于在哪里集中注意力的想法?
编辑:添加到专用于此队列的broker.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>
Run Code Online (Sandbox Code Playgroud)
use*_*118 10
我在用户手册的进一步研究中找到了这个:
max-disk-usage我们应该从磁盘使用的最大数据百分比.磁盘已满时,系统将阻塞.默认= 100
并且在服务启动后的日志中尚未发布消息:
WARN [org.apache.activemq.artemis.core.server] AMQ222210:存储使用超出了最大磁盘使用量.系统将开始阻止生产者.
所以我认为无论我的地址设置如何,它都会开始阻止.看着broker.xml最大磁盘使用率设置,它被设置为90文档默认说100,我设置的是,没有启动日志警告,和我的测试发布/订阅代码现在的作品.
| 归档时间: |
|
| 查看次数: |
3283 次 |
| 最近记录: |