Upload
others
View
17
Download
0
Embed Size (px)
Citation preview
Multitenant ActiveMQ
mailto:[email protected]@hgz
Intro
Top Level Project since Jan 17th, 2007.
Apache ActiveMQ is fast, supports many Cross Language Clients and Protocols, comes with easy to use Enterprise Integration Patterns and many advanced features while fully supporting JMS 1.1 and J2EE 1.4. Apache ActiveMQ is released under the Apache 2.0 License.
Features
✓ Fast✓ Mature✓ Robust✓ Secure✓ Scalable✓ Extensible
Product or Framework?
A JMS Application
… and other JMS Applications
The problem
What we’d like
What we got
What we really need
Options
Configuring Brokers
<beans … > <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> ... </bean> <broker brokerName="localhost" dataDirectory="${activemq.data}"> ... <destinationPolicy> ... </destinationPolicy> <managementContext> … </managementContext> <persistenceAdapter> ... </persistenceAdapter> <systemUsage> ... </systemUsage> <transportConnectors> ... </transportConnectors> <networkConnectors> ... </networkConnectors> <shutdownHooks> ... </shutdownHooks> </broker></beans>
http://activemq.apache.org/xml-configuration.html
http://activemq.apache.org/user-submitted-configurations.html
activemq xbean:file:../conf/myConfig.xml
Configuring brokers
public interface BrokerFactoryHandler {
// interface used to create a broker from a URI scheme
BrokerService createBroker(URI brokerURI) throws IOException;
}
public class AcnaFactoryHandler implements BrokerFactoryHandler {
// ...
}
Create: src/main/resources/META-INF/services/org/apache/activemq/broker/acna
class=org.example.activemq.acna.AcnaBrokerFactory
Discovering brokers
http://activemq.apache.org/discovery.html
http://activemq.apache.org/discovery-transport-reference.html
http://activemq.apache.org/ldap-broker-discovery-mechanism.html
<broker brokerName="one"> <transportConnectors> <transportConnector uri="tcp://localhost:0" discoveryUri="multicast://default"/> </transportConnectors></broker>
<broker brokerName="two"> <networkConnectors> <ldapNetworkConnector uri="ldap://ldap.example.com:389" base="dc=brokers,dc=example,dc=com" anonymousAuthentication="true" searchFilter="(cn=*)" searchScope="SUBTREE_SCOPE" /> </networkConnectors></broker>
Discovering brokers
public interface DiscoveryAgent extends Service {
// Sets the discovery listener
void setDiscoveryListener(DiscoveryListener listener);
// register a service
void registerService(String name) throws IOException;
// A process actively using a service may see it go down before the DiscoveryAgent notices the
// service's failure. That process can use this method to notify the DiscoveryAgent of the failure
// so that other listeners of this DiscoveryAgent can also be made aware of the failure.
void serviceFailed(DiscoveryEvent event) throws IOException;
}
Transports (protocols)
http://activemq.apache.org/configuring-transports.html
● AMQP
● MQTT
● OpenWire
● REST
● RSS and Atom
● Stomp
● WSIF
● WS Notification
● XMPP
Persistence <persistenceAdapter> <mKahaDB directory="${activemq.base}/data/kahadb"> <filteredPersistenceAdapters>
<filteredKahaDB queue="namespace.>"> <persistenceAdapter> <kahaDB journalMaxFileLength="32mb"/> </persistenceAdapter> </filteredKahaDB>
<filteredKahaDB> <persistenceAdapter> <kahaDB enableJournalDiskSyncs="false"/> </persistenceAdapter> </filteredKahaDB>
</filteredPersistenceAdapters> </mKahaDB> </persistenceAdapter>
http://activemq.apache.org/kahadb.html
Management and Monitoring
Diagnosis
Intermezzo
https://github.com/hzbarcea/apachecon/tree/master/acna2015
Broker Topologies
http://activemq.apache.org/masterslave.html
http://activemq.apache.org/networks-of-brokers.html
Plugins
http://activemq.apache.org/runtime-configuration.html
http://activemq.apache.org/timestampplugin.html
http://activemq.apache.org/security.html
(*) Need to provide the LdapConfiguration in the JAAS login.config(**) The ootb ldap authn/authz is not sufficient to infer the ‘zone’ (destination namespace)
<broker brokerName="broker"> <plugins> <runtimeConfigurationPlugin checkPeriod="15000" /> <timeStampingBrokerPlugin zeroExpirationOverride="30000" ttlCeiling="60000" />
<jaasAuthenticationPlugin configuration="LdapConfiguration" /> <authorizationPlugin> [...] </authorizationPlugin> </plugins></broker>
Infrastructure (platform)
Securing Brokers
✓ nio+ssl✓ https✓ ldaps (auth)
✓ CA✓ Logging✓ Non Repudiation✓ IDC✓ Malware Analysis
Networking
SilkMQ
Multitenant Deployment
Apache Brooklyn
CAMPCloud Applications Management for Platforms
TOSCATopology and Orchestration Specification for Cloud Applications
Brooklyn Blueprint
services:
- name: 06b399a3-a691-4850-9af4-43c2e8ecc07b
type: brooklyn.entity.messaging.activemq.ActiveMQBroker
brooklyn.config:
version: 5.11.1
activemq.brokerName: 06b399a3-a691-4850-9af4-43c2e8ecc07b
activemq.customConfigurationUrl: >
http://ec2-52-1-249-64.compute-1.amazonaws.com/nob/06b399a3-a691-4850-9af4-43c2e8ecc07b.xbean
1
Deploying Brokers
02
03
04
05
Q&A
Thanks!
Ciprian Ciubotariu CMoHAlexandru Zbarcea azbarcea
http://spectrsys.comhttp://busymachines.com/http://www.cloudsoftcorp.com/