32
-1- Better Living Through Messaging - Leveraging the HornetQ Message Broker at Shopzilla Mark Lui ( Merchant Services) and Josh Long (Inventory)

Messaging sz

Embed Size (px)

Citation preview

Page 1: Messaging sz

- 1 -

Better Living Through Messaging -

Leveraging the HornetQ Message

Broker at Shopzilla

Mark Lui ( Merchant Services)

and

Josh Long (Inventory)

Page 2: Messaging sz

- 2 -

What is Messaging

Page 3: Messaging sz

- 3 -

What is Messaging?

Store and Forward

Enables asynchronous communication

• Reduces latency for information transfer

Page 4: Messaging sz

- 4 -

What is Messaging?

Loosely coupled distributed communication (Data or Command)

Exchange of messages between software components

Two forms

• Point-to-Point (Queue)

• Publish/Subscribe (Topic)

Page 5: Messaging sz

- 5 -

Enterprise Application Integration

Integration of data and services between applications

Communication between information silos

Approaches

• File Transfer

• Shared Database

• Remote Procedure Call

• Messaging

Page 6: Messaging sz

- 6 -

Integration Patterns

Patterns

• Data Synchronization

• Workflow

• Portal

Page 7: Messaging sz

- 7 -

Enterprise Application Integration

• Approaches integration using messaging

• Enables Event Driven Architecture

• Multiple users of information

Page 8: Messaging sz

- 8 -

Message Queue Features

Reliable

Fast

Secure

Duplicate message detection

Flow control – Slow/Fast consumer handling

Wild card destinations

Durable subscription

Scheduled Delivery

Page 9: Messaging sz

- 9 -

Message Queue Features

Redelivery handling

• DLQ/Discard

• Delay redelivery

Message Ordering on Topics

Client side load balancing options

• Random

• Round Robin

Message prioritization

Page 10: Messaging sz

- 10 -

Introducing HornetQ

New ultra high performance enterprise grade messaging system

from JBoss

Apache V2 License

HornetQ 2.0.GA obtained scores up to 307% higher than

previously published SPECjms2007 benchmark results

“Throughput of 800K small non persistent messages per second

on a single 4 x 2.5GHz core server” – Tim Fox

Page 11: Messaging sz

- 11 -

HornetQ – Secret Sauce

LibAIO

• Linux Kernel 2.6 Subsystem

• Able to submit I/O requests without waiting for completion

HornetQ uses an append-only journal using LibAIO

ActiveMQ 6 will support LibAIO

Page 12: Messaging sz

- 12 -

ActiveMQ Issues

Difficult to configuration correctly

Prone to hang

Poor persistence options

• KahaDB – better scalability, shorter recovery time

• AMQ Message Store – faster

• JDBC database – too slow

Page 13: Messaging sz

- 13 -

High Availability - About Resiliency

Active/Passive replication

HornetQ Example

Page 14: Messaging sz

- 14 -

High Availability - About Resiliency

Live Server

Page 15: Messaging sz

- 15 -

High Availability - About Resiliency

Backup Server

Page 16: Messaging sz

- 16 -

Clustering - About Scalability

Client side load balancing

Page 17: Messaging sz

- 17 -

About performance

Offer Bidding Service Performance Data

Page 18: Messaging sz

- 18 -

Spring Framework

Connection Options

Page 19: Messaging sz

- 19 -

Spring Framework

Alternative Connection Options

Page 20: Messaging sz

- 20 -

Spring Framework

JMS Template

Page 21: Messaging sz

- 21 -

Spring Framework

Message Driven POJOs : MessageListener

Page 22: Messaging sz

- 22 -

Spring Framework

Message Driven POJOs : MessageListener

Page 23: Messaging sz

- 23 -

Spring Framework

Message Driven POJOs : SessionAwareMessageListener

Page 24: Messaging sz

- 24 -

Spring Framework

Message Driven POJOs : SessionAwareMessageListener

Page 25: Messaging sz

- 25 -

Spring Framework

Spring Integration

Page 26: Messaging sz

- 26 -

Spring Framework

Spring Integration

Page 27: Messaging sz

- 27 -

Messaging at Shopzilla

Merchant Service

• Offer Bidding Service – Using to scale

Inventory

• Offer Service

Dampening request to Coherence

Dampening request to Oracle for write behind

Page 28: Messaging sz

- 28 -

Merchant Service’s Order Bidding Service

Demo

Page 29: Messaging sz

- 29 -

Inventory’s Offer Service

Demo

Page 30: Messaging sz

- 30 -

HornetQ – Lessons Learned

Use the right Connection Factory

Use Spring 2.5.6 or 3.0

For High Availability disable Spring reconnection logic

Be aware of the High Availability restart sequence

Paging is turned off by default

JMX is your friend

Page 31: Messaging sz

- 31 -

Possible Future Opportunities

SLA compliance

Unified messaging

Real-time, event driven architectures

Page 32: Messaging sz

- 32 -

Conclusion

Q and A?

Don't forget to tip your waiter!