当前位置:  开发笔记 > 编程语言 > 正文

这是分布式机制的现实期望吗?

如何解决《这是分布式机制的现实期望吗?》经验,为你挑选了1个好方法。

我一直在评估ActiveMQ作为候选消息代理.我编写了一些测试代码,试图了解ActiveMQ的性能限制.

我可以通过尽快发送消息来在代理中生成故障状态,如下所示:

try {
    while(true) {
        byte[] payload = new byte[(int) (Math.random() * 16384)];
        BytesMessage message = session.createBytesMessage();
        message.writeBytes(payload);
        producer.send(message);
} catch (JMSException ex) { ... }

我很惊讶这条线

producer.send(message);

当经纪人进入失败状态时阻止.我希望会抛出一些异常,因此会有一些迹象表明经纪人已经失败了.

我意识到我的测试代码是在向代理发送垃圾邮件,我希望代理失败.但是,我更希望经纪人"大声"失败而不是简单地阻止.

这是不切实际的期望吗?

更新:

Uri的回答引用了3月提交的ActiveMQ错误报告.错误描述包括一个听起来像我正在寻找的提案:"如果传输上的请求超时(这是为了捕获故障情况,那么预计不会合理发生的事情),事情就会产生错误而不是建立等待线程."

但是,在8个月之后,该错误目前未通过一次投票分配.所以我想这个问题仍然存在,这是ActiveMQ应该(将会)实现的吗?



1> James Strach..:

您正在测试所有消息代理必须处理的"慢速消费者"和生产者流量控制问题.你想失败的生产者,阻止它们或假脱机到磁盘?

基本上,ActiveMQ中的开箱即用默认是阻止生产者.但您可以将消息游标配置为假脱机到磁盘.

顺便说一句,你没有说过你是使用队列/主题还是持久/非持久性; 如果您使用非持久性主题,则可以使用其他策略来丢弃消息等.

推荐阅读
yzh148448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有