首页 文章

使用Apache Camel进行负载 balancer

提问于
浏览
2

我可以从其他计算机或JVM访问SEDA或VM队列吗?
我实际上想在Camel的帮助下实现负载 balancer ,但不想为此引入另一个消息传递框架 . 我只是想使用一些内置队列从 生产环境 者向不同的消费者分配负载 .
可能吗?如果没有那么我的选择是什么?
Another Approach:(Pull Approach) 不确定新方法的优化程度或新方法的优缺点是什么,所以请帮我分析一下这种方法 .
消息将被放入主队列,并且所有工作者系统将监听主队列 . 比方说,100,000个消息被放入主队列,5个工作系统正在监听它 . 工作系统将从主队列中逐个处理消息 . 这种方法有两大好处:

  • 我不需要担心向 生产环境 者注册我的 Worker 系统 . 第六个系统刚刚启动并开始监听主队列 .

  • 我不需要担心向免费的消费者系统发送消息 . 当工作人员系统完成处理消息时,它会从主队列中获取另一个消息 .
    让我知道你对它的看法 .

3 回答

  • 2

    SEDA和VM://仅在同一个JVM上工作 .

    Java消息传递中的负载 balancer 通常使用JMS和Competing Consumers pattern来实现 . 您将消息发送到队列,并且多个消费者竞争处理它们 .

    如果带有队列的经纪人成为瓶颈 - 考虑使用扇出模式和经纪人网络 .

  • 2

    SEDA和VM endpoints 分别对主机Context和JVM有效 . 为了便于JVM到JVM的消息传递,您需要使用线上协议组件,例如但不限于Mina,HTTP或JMS .

  • 1

    最简单的方法是使用jms . 如果有n条路由侦听同一个jms队列,那么它们将自动进行负载均衡 . 如果一个人离开,负载将在剩余的负载上保持 balancer . 我建议从ActiveMQ开始,因为它很容易设置并与Camel良好集成 . 为了使代理具有高可用性,您可以设置两个独立代理或为每个camel实例设置一个嵌入式代理 .

相关问题