spring - High Performance Messaging between Java Client and Java 'Back End' -
i have basic java messaging application sends java objects remote server processing. leverage spring support on both sides of wire , use activemq jms provider. works - , have experienced no real problems 10 clients send messages concurrently.
however, want scale. number of clients increase circa 500 . also, bandwidth used each client more of issue declared initially.
i wondering whether thought activemq right tool job - or whether socket based tcp/udp scale better. not versed in of 'advanced' features of amq, since using basic spring jms template support.
any comments / thoughts appreciated.
thanks
without knowing quality of service , sla's you're trying achieve, basic rules follow when evaluating messaging service implementations application following...
performance on reliability
- fast messaging
- intermittent message loss acceptable
- messages non-persistent
- little no cost
in case, product zeromq (and others alike) suffice since works @ socket level, decentralized, offers extremely low latency , scales in large distributed systems, , open source cost negligible. if use cases require persistence , reliability, prepared implement custom solutions traditional messaging middleware offer out-of-box (persistence, durability, replication, etc).
balance performance , reliability
- performance , reliability equally important
- lost messages not acceptable
- messages persistent
- need support
- relatively low cost
here's products activemq, rabbitmq, etc., come play. broker-based middleware addresses reliability , persistence concerns while providing performance , scalability. support costs low enough small , mid-sized companies afford without breaking bank. it's safe messaging needs fall category because provides accessibility both performance , reliability, , can sacrifice 1 other based on future needs application matures without swapping out entire messaging infrastructure due bad choice made years earlier.
reliability on performance
- reliability important
- messages can't dropped
- message redelivery out-of-box
- clustering, ha, replication, etc. available out-of-box.
- need enterprise-class, global support , professional services
- high cost
financial firms, trading systems, banking applications, etc., typically have such requirements message system reliability has dollar-value attached it, , when things don't work, money lost. therefore, message persistence, ha/fault-tolerance, fail-over, extremely important. if cost not issue, @ products weblogic, websphere, sonicmq, or tibco, etc.,...they're expensive, offer solid reliability, enterprise support , perform under load. i've used sonicmq, it's great product, fast , reliable, costs arm , leg.
hope helps...
Comments
Post a Comment