event-driven architectures in heterogenous …...architectures in heterogenous environments using...
TRANSCRIPT
![Page 1: event-driven architectures in heterogenous …...architectures in heterogenous environments using open source Thomas Haug MATHEMA Software GmbH 153 2 About myself > Senior Consultant,](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec989843a2f9344685e8086/html5/thumbnails/1.jpg)
event-driven architectures in heterogenous environments using open sourceThomas HaugMATHEMA Software GmbH153
![Page 2: event-driven architectures in heterogenous …...architectures in heterogenous environments using open source Thomas Haug MATHEMA Software GmbH 153 2 About myself > Senior Consultant,](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec989843a2f9344685e8086/html5/thumbnails/2.jpg)
2
About myself
> Senior Consultant, Architect and Trainer(MATHEMA Software GmbH)
> 12+ years Java Enterprise development> 7+ years .Net development
> Main interests– Software architecture– Distributed systems– Object-Relational mapping
E-Mail: [email protected]
![Page 3: event-driven architectures in heterogenous …...architectures in heterogenous environments using open source Thomas Haug MATHEMA Software GmbH 153 2 About myself > Senior Consultant,](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec989843a2f9344685e8086/html5/thumbnails/3.jpg)
3
AGENDA
> Motivation> Tools Infrastructure> Example
– Simple Messaging– Routing & Enrichment– Multicasting– Scalability and Reliability– Availability
> Conclusion
![Page 4: event-driven architectures in heterogenous …...architectures in heterogenous environments using open source Thomas Haug MATHEMA Software GmbH 153 2 About myself > Senior Consultant,](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec989843a2f9344685e8086/html5/thumbnails/4.jpg)
4
AGENDA
> Motivation> Tools Infrastructure> Example
– Simple Messaging– Routing & Enrichment– Multicasting– Scalability and Reliability– Availability
> Conclusion
![Page 5: event-driven architectures in heterogenous …...architectures in heterogenous environments using open source Thomas Haug MATHEMA Software GmbH 153 2 About myself > Senior Consultant,](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec989843a2f9344685e8086/html5/thumbnails/5.jpg)
5
Motivation - Integration
Bridge of Millau, crossing the valley of Tarn © by clr_flickr at flickr
![Page 6: event-driven architectures in heterogenous …...architectures in heterogenous environments using open source Thomas Haug MATHEMA Software GmbH 153 2 About myself > Senior Consultant,](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec989843a2f9344685e8086/html5/thumbnails/6.jpg)
6
Motivation - the stage is set
Banking Server
Branch Bank
Branch Bank
Credit Card Processing
POS
Service Center
.Net Java
![Page 7: event-driven architectures in heterogenous …...architectures in heterogenous environments using open source Thomas Haug MATHEMA Software GmbH 153 2 About myself > Senior Consultant,](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec989843a2f9344685e8086/html5/thumbnails/7.jpg)
7
Motivation - Supported “Workflows“
Workflows> Customer Data Transfer> Credit Card Information> Transaction Data
Transfer
Banking Server(Java based)
Credit Card Processing(.Net based)
POS
Service Center
Branch Bank
Branch Bank
![Page 8: event-driven architectures in heterogenous …...architectures in heterogenous environments using open source Thomas Haug MATHEMA Software GmbH 153 2 About myself > Senior Consultant,](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec989843a2f9344685e8086/html5/thumbnails/8.jpg)
8
Motivation - Integration styles
Typical styles> File Transfer> RPC> Event-driven> Shared Databases
Banking Server(Java based)
Credit Card Processing(.Net based)
POS
Service Center
Branch Bank
Branch Bank
![Page 9: event-driven architectures in heterogenous …...architectures in heterogenous environments using open source Thomas Haug MATHEMA Software GmbH 153 2 About myself > Senior Consultant,](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec989843a2f9344685e8086/html5/thumbnails/9.jpg)
9
Motivation - File Transfer style
> Drawbacks– File naming conventions– Encoding of data– Updates tend to occur infrequently– How to detect / prevent lost files?– Security Issues
![Page 10: event-driven architectures in heterogenous …...architectures in heterogenous environments using open source Thomas Haug MATHEMA Software GmbH 153 2 About myself > Senior Consultant,](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec989843a2f9344685e8086/html5/thumbnails/10.jpg)
10
Motivation - Remote Procedure Call style
> Drawbacks– Tight coupling to interface and location– Synchronous invocation– Extensibility is difficult to achieve
RequestRequest
Response
![Page 11: event-driven architectures in heterogenous …...architectures in heterogenous environments using open source Thomas Haug MATHEMA Software GmbH 153 2 About myself > Senior Consultant,](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec989843a2f9344685e8086/html5/thumbnails/11.jpg)
11
Motivation - Event-driven / Message-driven style
> Drawbacks– Complex programming model– Sequencing of messages– Monitoring of system might be difficult
Message / Event Message / Event
Channel
![Page 12: event-driven architectures in heterogenous …...architectures in heterogenous environments using open source Thomas Haug MATHEMA Software GmbH 153 2 About myself > Senior Consultant,](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec989843a2f9344685e8086/html5/thumbnails/12.jpg)
12
Event Driven Architecture - Definition
> One Definition“In an event-driven architecture, a notable thing happens inside or outside your business, which disseminates immediately to all interested parties (human or automated). The interested parties evaluate the event, and optionally take action.” (Brenda M. Michelson 2006)
> Messaging vs. Event-driven Architectures– Messaging is about routing, transformation and storage of messages.– Event-driven architecture are usually build on top of messaging frameworks.
![Page 13: event-driven architectures in heterogenous …...architectures in heterogenous environments using open source Thomas Haug MATHEMA Software GmbH 153 2 About myself > Senior Consultant,](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec989843a2f9344685e8086/html5/thumbnails/13.jpg)
13
AGENDA
> Motivation> Tools Infrastructure> Example
– Simple Messaging– Routing & Enrichment– Multicasting– Scalability and Reliability– Availability
> Conclusion
![Page 14: event-driven architectures in heterogenous …...architectures in heterogenous environments using open source Thomas Haug MATHEMA Software GmbH 153 2 About myself > Senior Consultant,](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec989843a2f9344685e8086/html5/thumbnails/14.jpg)
14
Example - Which Solution ?
Banking Server(Java based)
Credit Card Processing
POS
Service Center
Channel
Branch Bank
Branch Bank
Enterprise Service Bus (ESB)
Lightweight Messaging Solution
© Foxtongue at flickr
![Page 15: event-driven architectures in heterogenous …...architectures in heterogenous environments using open source Thomas Haug MATHEMA Software GmbH 153 2 About myself > Senior Consultant,](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec989843a2f9344685e8086/html5/thumbnails/15.jpg)
15
Example
Banking Server(Java)
POS
Service Center
Channel
Branch Bank
Branch Bank
Credit Card Processing (.Net)
![Page 16: event-driven architectures in heterogenous …...architectures in heterogenous environments using open source Thomas Haug MATHEMA Software GmbH 153 2 About myself > Senior Consultant,](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec989843a2f9344685e8086/html5/thumbnails/16.jpg)
16
Apache ActiveMQ
> ActiveMQ is an Enterprise Message Broker– Based on JMS 1.1
> Current Version 5.3.2
> Asynchronous communication
> Simple Messaging (according to EDA definition)
> Provides Quality of Service like– Transaction handling – Guaranteed delivery – Location transparency
![Page 17: event-driven architectures in heterogenous …...architectures in heterogenous environments using open source Thomas Haug MATHEMA Software GmbH 153 2 About myself > Senior Consultant,](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec989843a2f9344685e8086/html5/thumbnails/17.jpg)
17
Apache ActiveMQ
> Supports various Transport protocols – VM, TCP, NIO, UDP, HTTP– SSL, HTTPS
> Protocols– AMQP, OpenWire, REST, Stomp, WS Notification,
Extensible Messaging and Presence Protocol (XMPP)
> Cross Platform Clients– C, C++, Perl, PHP, Pike, Python, Ruby– .Net Messaging API (NMS)
> Integrated Camel Support
![Page 18: event-driven architectures in heterogenous …...architectures in heterogenous environments using open source Thomas Haug MATHEMA Software GmbH 153 2 About myself > Senior Consultant,](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec989843a2f9344685e8086/html5/thumbnails/18.jpg)
18
Apache ActiveMQ - JMS Recap
> Point-to-Point
JMS Broker
Sender ReceiverJMS Queue
> Publisher-Subscriber
JMS Broker
Sender
Receiver 1
JMS Queue Receiver n
![Page 19: event-driven architectures in heterogenous …...architectures in heterogenous environments using open source Thomas Haug MATHEMA Software GmbH 153 2 About myself > Senior Consultant,](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec989843a2f9344685e8086/html5/thumbnails/19.jpg)
19
Apache ActiveMQ
> Java Publisher Example
1: ConnectionFactory factory = new ActiveMQConnectionFactory("tcp://localhost:61616"); Connection connection = factory.createConnection();
2: Session jmsSession = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); Topic topic = jmsSession.createTopic("DemoTopic");
3: MessageProducer producer = jmsSession.createProducer(topic);
4: producer.send( jmsSession.createTextMessage("Hello") );
1: ConnectionFactory factory = new ActiveMQConnectionFactory("tcp://localhost:61616"); Connection connection = factory.createConnection();
2: Session jmsSession = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); Topic topic = jmsSession.createTopic("DemoTopic");
3: MessageProducer producer = jmsSession.createProducer(topic);
4: producer.send( jmsSession.createTextMessage("Hello") );
![Page 20: event-driven architectures in heterogenous …...architectures in heterogenous environments using open source Thomas Haug MATHEMA Software GmbH 153 2 About myself > Senior Consultant,](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec989843a2f9344685e8086/html5/thumbnails/20.jpg)
20
Apache ActiveMQ
> C# Subscriber Example
1: using Apache.NMS.ActiveMQ; using Apache.NMS; namespace NMSSubscriber { class Subscriber { static void Main(string[] args) { 2: ConnectionFactory factory = new ConnectionFactory("tcp://localhost:61616"); IConnection connection = factory.CreateConnection(); 3: ISession jmsSession = connection.CreateSession(AcknowledgementMode.AutoAcknowledge); ITopic topic = jmsSession.GetTopic("DemoTopic"); 4: IMessageConsumer consumer = jmsSession.CreateConsumer(topic);
1: using Apache.NMS.ActiveMQ; using Apache.NMS; namespace NMSSubscriber { class Subscriber { static void Main(string[] args) { 2: ConnectionFactory factory = new ConnectionFactory("tcp://localhost:61616"); IConnection connection = factory.CreateConnection(); 3: ISession jmsSession = connection.CreateSession(AcknowledgementMode.AutoAcknowledge); ITopic topic = jmsSession.GetTopic("DemoTopic"); 4: IMessageConsumer consumer = jmsSession.CreateConsumer(topic);
![Page 21: event-driven architectures in heterogenous …...architectures in heterogenous environments using open source Thomas Haug MATHEMA Software GmbH 153 2 About myself > Senior Consultant,](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec989843a2f9344685e8086/html5/thumbnails/21.jpg)
21
Apache ActiveMQ
> C# Subscriber Example
5: consumer.Listener += new MessageListener( new Client().OnMessage); connection.Start(); } 6: public void OnMessage(IMessage message) { try { if (message is ItextMessage) { ITextMessage msg = message as ITextMessage; Console.WriteLine("Nachricht : " + msg.Text); }
} catch (NMSException e) {
Console.WriteLine(e);}
}
5: consumer.Listener += new MessageListener( new Client().OnMessage); connection.Start(); } 6: public void OnMessage(IMessage message) { try { if (message is ItextMessage) { ITextMessage msg = message as ITextMessage; Console.WriteLine("Nachricht : " + msg.Text); }
} catch (NMSException e) {
Console.WriteLine(e);}
}
![Page 22: event-driven architectures in heterogenous …...architectures in heterogenous environments using open source Thomas Haug MATHEMA Software GmbH 153 2 About myself > Senior Consultant,](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec989843a2f9344685e8086/html5/thumbnails/22.jpg)
22
Apache Camel
> powerful open source integration framework
> Current version 2.3
> Sub project of ActiveMQ
> Based on the well-known Enterprise Integration Patterns (EIP)(http://www.eaipatterns.com)
> Implement routing and mediation rules via– Java based Domain Specific Language – Spring based XML configuration – Scala DSL
![Page 23: event-driven architectures in heterogenous …...architectures in heterogenous environments using open source Thomas Haug MATHEMA Software GmbH 153 2 About myself > Senior Consultant,](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec989843a2f9344685e8086/html5/thumbnails/23.jpg)
23
Apache Camel
> API is transport protocol transparent
> Apache Camel supports:– Apache ActiveMQ (JMS Provider)– Apache CXF (JAX-WS implementation)– Apache MINA (networking framework)– Apache ServiceMix (ESB and JBI)
![Page 24: event-driven architectures in heterogenous …...architectures in heterogenous environments using open source Thomas Haug MATHEMA Software GmbH 153 2 About myself > Senior Consultant,](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec989843a2f9344685e8086/html5/thumbnails/24.jpg)
24
Apache Camel - Enterprise Integration Patterns
Application
Channel Message Router
Channel
System Management
Application
Endpoint
Message
Message Translator
![Page 25: event-driven architectures in heterogenous …...architectures in heterogenous environments using open source Thomas Haug MATHEMA Software GmbH 153 2 About myself > Senior Consultant,](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec989843a2f9344685e8086/html5/thumbnails/25.jpg)
25
Apache Camel - EIP
Application
Message
Channel
Message Translator
Message Router
Channel
System Management
Application
Endpoint
12 Patterns
10 Patterns
14 Patterns
10 Patterns
8 Patterns
7 Patterns
![Page 26: event-driven architectures in heterogenous …...architectures in heterogenous environments using open source Thomas Haug MATHEMA Software GmbH 153 2 About myself > Senior Consultant,](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec989843a2f9344685e8086/html5/thumbnails/26.jpg)
26
AGENDA
> Motivation> Tools Infrastructure> Example
– Simple Messaging– Routing & Enrichment– Multicasting– Scalability and Reliability– Availability
> Conclusion
![Page 27: event-driven architectures in heterogenous …...architectures in heterogenous environments using open source Thomas Haug MATHEMA Software GmbH 153 2 About myself > Senior Consultant,](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec989843a2f9344685e8086/html5/thumbnails/27.jpg)
27
Example - Transfer Details
Banking Server(Java based)
POS
Service Center
Channel
Branch Bank
Branch Bank
> CustomerCreated Event> CustomerModified Event> CustomerDeleted Event> TransactionOccured Event> ...
Credit Card Processing (.Net)
![Page 28: event-driven architectures in heterogenous …...architectures in heterogenous environments using open source Thomas Haug MATHEMA Software GmbH 153 2 About myself > Senior Consultant,](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec989843a2f9344685e8086/html5/thumbnails/28.jpg)
28
CustomerCreated Event
Normalizer
Bank Server
CustomerCreated
Guaranteed delivery
Card Server
Event-based Consumer
Message Translator
“CustomerQueue“
.Net & NMS
JMS MapMessageName String value
IBAN String value
Canonical Message
![Page 29: event-driven architectures in heterogenous …...architectures in heterogenous environments using open source Thomas Haug MATHEMA Software GmbH 153 2 About myself > Senior Consultant,](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec989843a2f9344685e8086/html5/thumbnails/29.jpg)
29
Implementation - Card Server
> Handling CustomerCreated Event
1: public void OnMessage(IMessage message) { try { if (message is ImapMessage) { 2: IMapMessage msg = (ImapMessage)message; IPrimitiveMap map = message.Body;
Customer customer = new Customer(); customer.IBAN = map.GetString(CUSTOMER_IBAN); customer.Name = map.GetString(CUSTOMER_NAME);
3: customerDao.SaveNewCustomer(customer); Console.WriteLine("Saving customer '{0}' succeeded", customer); } } }
1: public void OnMessage(IMessage message) { try { if (message is ImapMessage) { 2: IMapMessage msg = (ImapMessage)message; IPrimitiveMap map = message.Body;
Customer customer = new Customer(); customer.IBAN = map.GetString(CUSTOMER_IBAN); customer.Name = map.GetString(CUSTOMER_NAME);
3: customerDao.SaveNewCustomer(customer); Console.WriteLine("Saving customer '{0}' succeeded", customer); } } }
![Page 30: event-driven architectures in heterogenous …...architectures in heterogenous environments using open source Thomas Haug MATHEMA Software GmbH 153 2 About myself > Senior Consultant,](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec989843a2f9344685e8086/html5/thumbnails/30.jpg)
30
AGENDA
> Motivation> Tools Infrastructure> Example
– Simple Messaging– Routing & Enrichment– Multicasting– Scalability and Reliability– Availability
> Conclusion
![Page 31: event-driven architectures in heterogenous …...architectures in heterogenous environments using open source Thomas Haug MATHEMA Software GmbH 153 2 About myself > Senior Consultant,](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec989843a2f9344685e8086/html5/thumbnails/31.jpg)
31
CustomerModified Event CustomerCreated
Normalizer
Bank Server
Guaranteed delivery
Card Server
Event-based Consumer
Message Translator
“CustomerQueue“
CustomerCreated“NewCustomer“
CustomerModifiedNormalizer “ModifiedCustomer“
![Page 32: event-driven architectures in heterogenous …...architectures in heterogenous environments using open source Thomas Haug MATHEMA Software GmbH 153 2 About myself > Senior Consultant,](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec989843a2f9344685e8086/html5/thumbnails/32.jpg)
32
CustomerModified EventNormalizer
Bank Server
CustomerCreated
Guaranteed delivery
Card Server
Event-based Consumer
Message Translator
“CustomerQueue“
Normalizer
CustomerCreated
CustomerModified
“NewCustomer“
“ModifiedCustomer“
Content enricher
Modified Customer
Content enricher
New Customer
![Page 33: event-driven architectures in heterogenous …...architectures in heterogenous environments using open source Thomas Haug MATHEMA Software GmbH 153 2 About myself > Senior Consultant,](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec989843a2f9344685e8086/html5/thumbnails/33.jpg)
33
Implementation - Normalized Message
> Handle Event in C#
JMS MapMessageName String value
IBAN String value
JMS MapMessageType int value
Name String value
IBAN String value
1: public void OnMessage(IMessage message) { try { if (message is ImapMessage) { 2: IMapMessage msg = (ImapMessage)message;
3: if (msg.Properties.GetInt(REQUEST_TYPE) == REQUEST_NEW_CUSTOMER){ IPrimitiveMap map = message.Body; // save customer }
1: public void OnMessage(IMessage message) { try { if (message is ImapMessage) { 2: IMapMessage msg = (ImapMessage)message;
3: if (msg.Properties.GetInt(REQUEST_TYPE) == REQUEST_NEW_CUSTOMER){ IPrimitiveMap map = message.Body; // save customer }
Header
Body
![Page 34: event-driven architectures in heterogenous …...architectures in heterogenous environments using open source Thomas Haug MATHEMA Software GmbH 153 2 About myself > Senior Consultant,](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec989843a2f9344685e8086/html5/thumbnails/34.jpg)
34
Implementation - Routing & EnrichmentCustomerCreated
CustomerModified
“NewCustomer“
“ModifiedCustomer“
Guaranteed delivery
“CustomerQueue“
Content enricher
Modified Customer
Content enricher
New Customer
> Apache Camel provides the means to do that– transparently to the application– embedded into Apache ActiveMQ
![Page 35: event-driven architectures in heterogenous …...architectures in heterogenous environments using open source Thomas Haug MATHEMA Software GmbH 153 2 About myself > Senior Consultant,](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec989843a2f9344685e8086/html5/thumbnails/35.jpg)
35
Implementation – Routing & Enrichment
> Activate Apache Camel inside Apache ActiveMQ– activemq.xml (in conf Directory)
<!-- Uncomment to enable Camel Take a look at camel.xml for more details --> <import resource="camel.xml"/>
<!-- Uncomment to enable Camel Take a look at camel.xml for more details --> <import resource="camel.xml"/>
![Page 36: event-driven architectures in heterogenous …...architectures in heterogenous environments using open source Thomas Haug MATHEMA Software GmbH 153 2 About myself > Senior Consultant,](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec989843a2f9344685e8086/html5/thumbnails/36.jpg)
36
Implementation – Routing & Enrichment
> Adding a Camel route to camel.xml (in the conf directory)
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://camel.apache.org/schema/spring
http://camel.apache.org/schema/spring/camel-spring.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring"> <route> <from uri="activemq:NewCustomer"/> <to uri="activemq:CustomerQueue"/> </route> </camelContext><beans>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://camel.apache.org/schema/spring
http://camel.apache.org/schema/spring/camel-spring.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring"> <route> <from uri="activemq:NewCustomer"/> <to uri="activemq:CustomerQueue"/> </route> </camelContext><beans>
![Page 37: event-driven architectures in heterogenous …...architectures in heterogenous environments using open source Thomas Haug MATHEMA Software GmbH 153 2 About myself > Senior Consultant,](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec989843a2f9344685e8086/html5/thumbnails/37.jpg)
37
Implementation – Routing & Enrichment
> Adding a Camel Enrichment to camel.xml (in the conf directory)
<beans <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring"> <route> <from uri="activemq:NewCustomer"/>
<setHeader headerName="Type"> <constant>NewCustomer</constant> </setHeader>
<to uri="activemq:CustomerQueue"/> </route> </camelContext><beans>
<beans <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring"> <route> <from uri="activemq:NewCustomer"/>
<setHeader headerName="Type"> <constant>NewCustomer</constant> </setHeader>
<to uri="activemq:CustomerQueue"/> </route> </camelContext><beans>
![Page 38: event-driven architectures in heterogenous …...architectures in heterogenous environments using open source Thomas Haug MATHEMA Software GmbH 153 2 About myself > Senior Consultant,](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec989843a2f9344685e8086/html5/thumbnails/38.jpg)
38
AGENDA
> Motivation> Tools Infrastructure> Example
– Simple Messaging– Routing & Enrichment– Multicasting– Scalability and Reliability– Availability
> Conclusion
![Page 39: event-driven architectures in heterogenous …...architectures in heterogenous environments using open source Thomas Haug MATHEMA Software GmbH 153 2 About myself > Senior Consultant,](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec989843a2f9344685e8086/html5/thumbnails/39.jpg)
39
Wire Tap CustomerCreated Event
Normalizer
Bank Server
CustomerCreated
Guaranteed delivery
Card Server
Event-based Consumer
Message Translator
“CustomerQueue“
.Net & NMS
JMS MapMessageName String value
IBAN String value
Number of new Customers
Wire Tap
![Page 40: event-driven architectures in heterogenous …...architectures in heterogenous environments using open source Thomas Haug MATHEMA Software GmbH 153 2 About myself > Senior Consultant,](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec989843a2f9344685e8086/html5/thumbnails/40.jpg)
40
Wire Tap CustomerCreated Event
> Wire Tap to JMS Topic with camel.xml
<beans <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring"> <route> <from uri="activemq:CARD_NEW_CUSTOMER"/> <multicast> <pipeline> <setHeader headerName="Type"> <constant>NewCustomer</constant> </setHeader> <to uri="activemq:CARD_GLOBAL_QUEUE"/> </pipeline> <to uri="activemq:topic:CARD_BAM"/> </multicast> </route>
<beans <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring"> <route> <from uri="activemq:CARD_NEW_CUSTOMER"/> <multicast> <pipeline> <setHeader headerName="Type"> <constant>NewCustomer</constant> </setHeader> <to uri="activemq:CARD_GLOBAL_QUEUE"/> </pipeline> <to uri="activemq:topic:CARD_BAM"/> </multicast> </route>
![Page 41: event-driven architectures in heterogenous …...architectures in heterogenous environments using open source Thomas Haug MATHEMA Software GmbH 153 2 About myself > Senior Consultant,](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec989843a2f9344685e8086/html5/thumbnails/41.jpg)
41
AGENDA
> Motivation> Tools Infrastructure> Example
– Simple Messaging– Routing & Enrichment– Multicasting– Scalability and Reliability– Availability
> Conclusion
![Page 42: event-driven architectures in heterogenous …...architectures in heterogenous environments using open source Thomas Haug MATHEMA Software GmbH 153 2 About myself > Senior Consultant,](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec989843a2f9344685e8086/html5/thumbnails/42.jpg)
42
Scalability and Reliability
Guaranteed delivery
Card Server
Event-based Consumer
Message Translator
“CustomerQueue“
Guaranteed delivery
“CustomerQueue“ Card Server
Event-based Consumer
Card Server
Event-based Consumer
Competing Consumers
![Page 43: event-driven architectures in heterogenous …...architectures in heterogenous environments using open source Thomas Haug MATHEMA Software GmbH 153 2 About myself > Senior Consultant,](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec989843a2f9344685e8086/html5/thumbnails/43.jpg)
43
AGENDA
> Motivation> Tools Infrastructure> Example
– Simple Messaging– Routing & Enrichment– Multicasting– Scalability and Reliability– Security– Availability
> Conclusion
![Page 44: event-driven architectures in heterogenous …...architectures in heterogenous environments using open source Thomas Haug MATHEMA Software GmbH 153 2 About myself > Senior Consultant,](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec989843a2f9344685e8086/html5/thumbnails/44.jpg)
44
Security
Banking Server(Java)
POS
Service Center
ActiveMQ Broker
Branch Bank
Branch Bank
![Page 45: event-driven architectures in heterogenous …...architectures in heterogenous environments using open source Thomas Haug MATHEMA Software GmbH 153 2 About myself > Senior Consultant,](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec989843a2f9344685e8086/html5/thumbnails/45.jpg)
45
Security - Using Secure Socket Layer
> Securing the Broker– activemq.xml (in the conf directory)
<beans ...> <broker xmlns="http://activemq.apache.org/schema/core" brokerName="localhost" dataDirectory="${activemq.base}/data" destroyApplicationContextOnStop="true"> <sslContext> <sslContext keyStore="file:path/to/broker.ks" keyStorePassword="ks_pwd" trustStore="file:path/to/broker.ts" trustStorePassword="ts_pwd"/> </sslContext>
<transportConnectors> <transportConnector name="ssl" uri="ssl://localhost:61617"/> </transportConnectors>
<beans ...> <broker xmlns="http://activemq.apache.org/schema/core" brokerName="localhost" dataDirectory="${activemq.base}/data" destroyApplicationContextOnStop="true"> <sslContext> <sslContext keyStore="file:path/to/broker.ks" keyStorePassword="ks_pwd" trustStore="file:path/to/broker.ts" trustStorePassword="ts_pwd"/> </sslContext>
<transportConnectors> <transportConnector name="ssl" uri="ssl://localhost:61617"/> </transportConnectors>
![Page 46: event-driven architectures in heterogenous …...architectures in heterogenous environments using open source Thomas Haug MATHEMA Software GmbH 153 2 About myself > Senior Consultant,](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec989843a2f9344685e8086/html5/thumbnails/46.jpg)
46
Security - Using Secure Socket Layer
> Securing the Java Server– ActiveMQ Broker Certificate (public key) must
be stored in Clients Truststore– Start Java Server with following system properties
javax.net.ssl.keyStore=path/to/client.ks javax.net.ssl.keyStorePassword=client_pwd javax.net.ssl.trustStore=path/to/client.ts
> Replace Broker URL in Java Server
> SSL Debugging
String url = "ssl://theBroker:61617";String url = "ssl://theBroker:61617";
-Djavax.net.debug=ssl-Djavax.net.debug=ssl
![Page 47: event-driven architectures in heterogenous …...architectures in heterogenous environments using open source Thomas Haug MATHEMA Software GmbH 153 2 About myself > Senior Consultant,](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec989843a2f9344685e8086/html5/thumbnails/47.jpg)
47
Security - Using Secure Socket Layer
> Securing the .Net Server– Requires NMS 1.3– Requires .Net 3.5 (at least 2.0 does not work)– Import ActiveMQ Certificate (public key) into the servers truststore
by using the Certificate Snap-in in the Microsoft Management Console (MMC) (just type mmc at the command prompt)
![Page 48: event-driven architectures in heterogenous …...architectures in heterogenous environments using open source Thomas Haug MATHEMA Software GmbH 153 2 About myself > Senior Consultant,](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec989843a2f9344685e8086/html5/thumbnails/48.jpg)
48
AGENDA
> Motivation> Tools Infrastructure> Example
– Simple Messaging– Routing & Enrichment– Multicasting– Scalability and Reliability– Security– Availability
> Conclusion
![Page 49: event-driven architectures in heterogenous …...architectures in heterogenous environments using open source Thomas Haug MATHEMA Software GmbH 153 2 About myself > Senior Consultant,](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec989843a2f9344685e8086/html5/thumbnails/49.jpg)
49
Availability
Banking Server(Java)
POS
Service Center
ActiveMQ Broker
Branch Bank
Branch Bank
Single Point Of Failure (SPOF)
Single Point Of Failure (SPOF)
![Page 50: event-driven architectures in heterogenous …...architectures in heterogenous environments using open source Thomas Haug MATHEMA Software GmbH 153 2 About myself > Senior Consultant,](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec989843a2f9344685e8086/html5/thumbnails/50.jpg)
50
Availability
> Reconnecting consumers and producers– Failover protocol– Simple modify your broker URL
– Works for Java and .Net–
> Reconnection to Master-Slave Broker Configuration
String url = "failover:(tcp://localhost:61616)";String url = "failover:(tcp://localhost:61616)";
String url = "failover:(tcp://localhost:61616, tcp://localhost:61618)?randomize=false";String url = "failover:(tcp://localhost:61616, tcp://localhost:61618)?randomize=false";
![Page 51: event-driven architectures in heterogenous …...architectures in heterogenous environments using open source Thomas Haug MATHEMA Software GmbH 153 2 About myself > Senior Consultant,](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec989843a2f9344685e8086/html5/thumbnails/51.jpg)
51
AGENDA
> Motivation> Tools Infrastructure> Example
– Simple Messaging– Routing & Enrichment– Multicasting– Scalability and Reliability– Security– Availability
> Conclusion
![Page 52: event-driven architectures in heterogenous …...architectures in heterogenous environments using open source Thomas Haug MATHEMA Software GmbH 153 2 About myself > Senior Consultant,](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec989843a2f9344685e8086/html5/thumbnails/52.jpg)
52
Conclusion
> Using– Apache ActiveMQ,– Apache AciveMQ NMS– Apache Camelwe are able to integrate .Net with Java
> We gained– Loose-coupling– Guaranteed Delivery– Extensibility– Scalability and Reliability– Security– Availability
© by Steve Punter at flickr
![Page 53: event-driven architectures in heterogenous …...architectures in heterogenous environments using open source Thomas Haug MATHEMA Software GmbH 153 2 About myself > Senior Consultant,](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec989843a2f9344685e8086/html5/thumbnails/53.jpg)
53
Conclusion
> We only saw a very small part of Apache ActiveMQ and Camel
> Infrastructure is kind of lightweight– Intermediate broker
> Obstracles– Documentation is partly available– Programming Model is more complex– Debugging is more demanding– No “real” .Net Transactions (System.Transaction namespace)
© by Steve Punter at flickr
![Page 54: event-driven architectures in heterogenous …...architectures in heterogenous environments using open source Thomas Haug MATHEMA Software GmbH 153 2 About myself > Senior Consultant,](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec989843a2f9344685e8086/html5/thumbnails/54.jpg)
54
Literature
![Page 56: event-driven architectures in heterogenous …...architectures in heterogenous environments using open source Thomas Haug MATHEMA Software GmbH 153 2 About myself > Senior Consultant,](https://reader034.vdocuments.us/reader034/viewer/2022042223/5ec989843a2f9344685e8086/html5/thumbnails/56.jpg)
56
Event Processing Styles
> Simple Event Processing– a event initiates downstream action(s)
> Stream Event Processing– Consumer receives many event but reacts only to notable
> Complex Event Processing (CEP)– Consumer reacts on multiple events under certain logical conditions – correlation may be casual, temporal, or spatial.
a