20:25:56 <daMaestro> #startmeeting
20:25:56 <zodbot> Meeting started Sat Dec  5 20:25:56 2009 UTC.  The chair is daMaestro. Information about MeetBot at http://wiki.debian.org/MeetBot.
20:25:56 <zodbot> Useful Commands: #action #agreed #halp #info #idea #link #topic.
20:26:20 <daMaestro> #topic AMQP + qpid
20:26:55 <daMaestro> # Event Distribution
20:27:23 <daMaestro> 1. Management of server farms
20:27:27 <daMaestro> 2. Hardware events
20:27:34 <daMaestro> 3. Package management
20:28:20 <daMaestro> # Integration
20:28:44 <daMaestro> 1. Examples: audit, order processing, inventory, accounts
20:28:59 <daMaestro> 2. Fedora Example: CVS, Bodhi, FAS, Koji
20:29:25 <daMaestro> 3. Language Integration, OSes: Good candidate to integrate.
20:29:53 <daMaestro> # Proprietary Systems Very Expensive
20:29:58 <daMaestro> 1. Millions of Dollars
20:30:37 <daMaestro> 2. Proprietary Formats, vendors don't communicate
20:30:50 <daMaestro> 3. Not standards based
20:31:15 <daMaestro> 4. Very large deployments, billions of dollars
20:31:40 <daMaestro> 5. AMQP developed for a standard format on the wire
20:32:02 <daMaestro> 6. Old method, 'bridge' between different formats
20:32:11 <daMaestro> # AMQP
20:32:28 <daMaestro> 1. Advanced Message Queuing Protocol
20:32:43 <daMaestro> 2. A standardized binary wire-level protocol
20:32:50 <daMaestro> 2. Royalty free
20:32:56 <daMaestro> 3. Royalty free
20:33:12 <daMaestro> 4. Platform agnostic
20:33:22 <daMaestro> 5. Wire protocol
20:33:28 <daMaestro> 6. Semantic model
20:34:00 <daMaestro> # Open source implementations
20:34:07 <daMaestro> 1. Apache Qpid
20:34:15 <daMaestro> 2. RabbitMQ
20:34:20 <daMaestro> 3. OpenMQ
20:34:27 <daMaestro> 4. More, open standard
20:34:33 <daMaestro> # Apache Qpid
20:34:36 <daMaestro> 1. Open source
20:34:46 <daMaestro> 2. Vibrant community
20:35:04 <daMaestro> 3. Actively used by many upstream communities
20:35:36 <daMaestro> 4. Multi-lanuage support: java, c++
20:36:14 <daMaestro> 5. Language bindings: Pretty much all main languages, easily written in other languages
20:36:34 <daMaestro> Q: Documentation missing
20:37:22 <daMaestro> A: Yes, it could be much much better. Resource issues with regards to documentation. Attempts to organize documentation in wiki.
20:39:20 <daMaestro> 6. New high-level API for python and C++ (and soon ruby) that will have much easier on developers
20:42:36 <daMaestro> 7. More documentation for new API and consistency between different languages
20:44:09 <daMaestro> 8. 'Durable' messaging: message journaling, async
20:44:22 <daMaestro> 9. Security: SSL, kerberos, ACLs
20:46:10 <daMaestro> 10. Queue Symantics: management of queue, memory space, queue depth, message replay, message history
20:46:48 <daMaestro> 11. Replication, HA, geo-replication of all messages
20:47:28 <daMaestro> 12. Available in fedora, except java
20:48:08 <daMaestro> # Apache Qpid Management via QMF
20:48:12 <daMaestro> 1. Build on qpid messaging
20:48:21 <daMaestro> 2. General purpose messaging bus
20:48:26 <daMaestro> 3. Agent and console API
20:48:39 <daMaestro> 4. Can be used to manage anything (ovirt as an example)
20:48:51 <daMaestro> 5. qpid tools are based on QMF
20:48:55 <daMaestro> # Reliability
20:48:59 <daMaestro> 1. At most once
20:49:01 <daMaestro> 2. At least once
20:49:07 <daMaestro> 3. Exactly once
20:50:03 <daMaestro> Q: What consumer would use these?
20:53:25 <daMaestro> A: Very application dependent, examples are CVS vs Banking and different business requirements. Additionally, for critical applications not using exactly once the implementation is on the application side.
20:53:39 <daMaestro> # Reliability Strategies
20:53:43 <daMaestro> 1. Clustering
20:53:50 <daMaestro> 2. Persistent Queues
20:53:56 <daMaestro> 3. Queue Replication
20:54:00 <daMaestro> 4. Federation
20:54:05 <daMaestro> 5. Transactions
20:55:22 <daMaestro> 6. Diagram: What strategy works best for different issues/conditions.
20:56:00 <daMaestro> # Performance
20:56:05 <daMaestro> 1. Depends on setup
20:56:14 <daMaestro> 2. Best to try on your env and compare results
20:56:29 <daMaestro> 3. C++ : perftest latency test
20:56:59 <daMaestro> 4. JMS/Java: qpidbench, testkit, sonic benchmark
20:57:05 <daMaestro> 3. C++ : perftest, latencytest
20:57:26 <daMaestro> #endmeeting