SlideShare ist ein Scribd-Unternehmen logo
1 von 33
Downloaden Sie, um offline zu lesen
Using Apache Puslar as a Modern, Scalable,
High Performing JMS Platform
Yabin Meng - Vanguard Solutions Architect @ DataStax
Agenda
● Introduction of JMS
● Introduction of Pulsar
● DataStax Starlight API for JMS Deep Dive
● Summary
Introduction of JMS
History of JMS
● Jakarta Messaging (formerly called Java Messaging Service), as part
of Jakarta Enterprise Edition (EE) specifications
● A standard and generic Java API for message-oriented middleware
(MOM)
● JMS 2.0 (backward compatible with JMS 1.1) is still the mainstream
Introduction of JMS
Messaging Domains
Introduction of JMS
● Point to Point (P2P)
○ Queue as the JMS destination
○ Each message is delivered to one and ONLY one
receiver
○ No timing dependency between sender and receiver
○ Message acknowledgement is needed
● Publish/Subscribe (Pub/Sub)
○ Topic as the JMS destination
○ Each message is delivered to multiple subscribers
○ Timing dependency between publisher and
subscriber
○ Message acknowledgement is not required
JMS APIs
Introduction of JMS
● JMS API
○ JMS 1.0: Domain specific
○ JMS 1.1 (Classic):
ConnectionFactory, Connection,
Session, MessageProducer,
MessageConsumer
○ JMS 2.0 (Simplified):
ConnectionFactory, JMSContext,
JMSProducer, JMSConsumer
○ JMS 3.0: Jakarta Messaging Next
#242
● Classic API (1.1)
● Simplified API (2.0)
JMS Administration and JNDI Integration
Introduction of JMS
● JMS Administration
○ Connection Factory and Destination
○ Maximize JMS client application
portability
● JNDI Service Providers
○ Java RMI Registry
○ CORBA common object service
(COS) name service
○ LDAP
○ JMS Provider specific
Introduction of Pulsar
What is Pulsar?
Introduction of Pulsar
● JMS is an old technology
○ Newer MOM technology like Kafka or
Pulsar is needed
● Cloud Native, distributed, and unified
messaging and streaming platform
● Apache TLP since Oct. 2018
Pulsar Key Differentiators
Introduction of Pulsar
● Tiered architecture design
○ Stateless broker
○ Segment-centric data persistence
○ Fast and robust scaling, disaster
recovery
● Unified and flexible messaging model
○ Queuing and Pub/Sub
● Native Geo-replication
● Robust and powerful multi-tenancy
Pulsar Messaging Semantics Basic
Introduction of Pulsar
● Message organization
○ Tenant → Namespace → Topic →
Message
persistent://my-tenant/my-namespace/my-topic
● Consumer/Subscription
○ Cursor (offset)
○ Subscription types
● Built-in Schema Registry
○ Primitive types
○ Complex types - Avro, Json, Protobuf
DataStax Starlight API for JMS
What is Starlight JMS?
DataStax Starlight API for JMS
● DataStax Starlight API suite
○ Make Apache Pulsar as the unified processing
platform for other messaging protocols, with
minimal impact
■ JMS
■ Kafka
■ RabbitMQ (AMQP 0.9.1)
● Starlight JMS
○ Makes Apache Pulsar as a JMS Provider
○ Fully compatible with JMS 2.0
■ Backward compatible with JMS 1.1
○ Passed 98% JMS TCK compliance test
○ Java API
■ Based on Apache Pulsar Java Client API and
Admin API
○ Open Source (Apache-2.0 License)
Why Starlight JMS?
DataStax Starlight API for JMS
● Blazing Fast performance
○ 1M+ msg/s with single-digit latency
● Drop-in replacement for existing JMS
applications
● Horizontally scalable JMS
○ Fast and low impact scalability of
Apache Pulsar
○ Separation between compute and
storage
● Native message re-play in JMS
○ Travel back in time
● Consolidate JMS applications across
multiple legacy JMS providers
○ Reduced TCO, Operation Complexity
● Open source
○ Avoid vendor lock-in
● Cloud native
○ K8s
JMS to Pulsar Concepts Mapping
DataStax Starlight API for JMS
JMS Object Pulsar Object
JMS Message
- Message header and property
Pulsar Message
- Message property
Destination/Topic/Queue Persistent topic (with specified topic name)
Temporary Destination/Temporary Topic/Temporary Queue Persistent topic (with randomly generated topic name)
MessageProducer/TopicPublisher/QueueSender Producer
MessageConsumer/TopicSubscriber/QueueReceiver Consumer (with a subscription)
QueueBrowser Reader for a topic
Example code
DataStax Starlight API for JMS
Map<String, Object> configuration = new HashMap<>();
configuration.put("webServiceUrl", "http://localhost:8080");
configuration.put("brokerServiceUrl", "pulsar://localhost:6650");
PulsarConnectionFactory factory = new PulsarConnectionFactory(configuration);
try (JMSContext context = factory.createContext()) {
Destination destination = context.createQueue("persistent://public/default/test");
context.createProducer().send(destination, "text");
try (JMSConsumer consumer = context.createConsumer(destination)) {
String message = consumer.receiveBody(String.class);
...
}
}
Establish Connection
DataStax Starlight API for JMS
● Entry Point Objects
○ PulsarConnectionFactory
■ PulsarJMSContext
■ PulsarConnection & PulsarSession
● Connection Properties
○ webServiceUrl and brokerServiceUrl
○ producerConfig and consumerConfig
○ enableTransaction
■ At least Apache Pulsar 2.7.0+
■ Better with version 2.8.1+
○ Other Pulsar Client Connection specific
configuration
■ Authentication, TLS, etc.
○ Starlight JMS specific configuration
■ jms.systemNamespace
■ … …
Create Destinations
DataStax Starlight API for JMS
● Persistent Pulsar topics
○ Temporary destinations explicitly deleted
when JMS connection is closed
Destination
Type
Pulsar Topic Name
Queue Client provided string (<client_string>)
If it starts with “persistent://”, then <client_string>;
Otherwise, persistent://<jms.systemNamespace>/<client_string>
Topic
Temporary Queue persistent://<jms.systemNamespace>/jms-temp-queue-<UUID>
Temporary Topic persistent://<jms.systemNamespace>/jms-temp-topic-<UUID>
Create Producer and Consumer
DataStax Starlight API for JMS
● (Producer) Message Send
○ Pulsar producer API
○ Sync and Async mode
■ setAsync(CompletionListener)
● (Consumer) Message Receive
○ Pulsar consumer API
○ Sync and Async mode
■ setMessageListener(MessageLis
tener
● (QueueBrowser) Message Receive
○ Pulsar reader API
○ Peek messages in a Queue
Create Message
DataStax Starlight API for JMS
● JMS Headers
○ Mapped to Pulsar Properties
○ Not all JMS header behavior is relevant
in Pulsar
○ Starlight JMS client side emulated
behavior
■ JMSReplyTo
■ JMSPriority
■ JMSExpiration
■ … …
● JMS Properties
○ Application specific JMS properties
■ 1-1 mapping to Pulsar Properties
○ Standard JMS properties
■ JMSXGroupID → Pulsar message key
■ … …
■ Others: ignored
○ Vendor specific system JMS properties
■ Not supported
○ Starlight JMS added Property
■ JMSConnectionID
■ JMSPulsarMessageType
Create Message, continued
DataStax Starlight API for JMS
● JMS Message Body
○ All JMS Message types are supported
○ StreamMessage
■ Stream of Java primitive values
○ MapMessage
■ Key-value pairs (String / Java primitive
type)
○ TextMessage
○ ObjectMessage
■ Serializable Java object
○ BytesMessage (Default)
■ Stream of uninterpreted bytes.
● Pulsar Message Payload Type
○ Byte[]
○ JMSPulsarMessageType message
property
Session Mode and Message Acknowledgement
DataStax Starlight API for JMS
Session Mode Note
AUTO_ACKNOWLEDGE ● Starlight JMS API (runtime) immediately sends a client acknowledgment for each message it delivers to a
message consumer.
● From Pulsar server perspective, the messages are acknowledged in synchronous mode.
CLIENT_ACKNOWLEDGE ● The message consumer must explicitly call Message.acknowledge() method to acknowledge the receipt of a
message.
● Acknowledging a consumed message automatically acknowledges the receipt of all messages that have been
delivered by its session.
● From Pulsar server perspective, the messages are acknowledged in asynchronous mode; and the consumer
sends out acknowledgements without checking if there is any error.
DUPS_OK_ACKNOWLEDGE ● Starlight JMS API (runtime) sends a client acknowledgment for each message it delivers to a message
consumer, in asynchronous mode; but it will wait and capture any error in non-blocking way.
● From Pulsar server perspective, this mode is orthogonal with how Pulsar handles message duplication delivery.
SESSION_TRANSACTED ● Indicate this session is dealing with JMS message transactions. More on this in the next page.
Session Mode and Transacted Messages
DataStax Starlight API for JMS
● Enabled in Starlight JMS API when
○ Global ConnectionFactory configuration enableTransaction is set to true
○ Session mode is set to SESSION_TRANSACTED
● Maps to Pulsar Transaction
○ Atomic multi-topic(partition) writes
○ Atomic multi-subscription acknowledgement
● Apache Pulsar version
○ At least version 2.7.0+
○ Exactly-once semantics: 2.8.1+
Delayed Message Delivery
DataStax Starlight API for JMS
● JMS spec doesn’t specify how delayed messages should be implemented
● Most JMS Provider implements this using message property
○ message.setLongProperty(“property_name”, long)
● Starlight JMS API
○ producer.setDeliveryDelay(long)
○ Map to Pulsar
■ TypedMessageBuilder.deliverAfter(long delay, TimeUnit unit)
Message Selector
DataStax Starlight API for JMS
● Message Selector Recap
○ A String based on a subset of the SQL92 conditional expression syntax
○ Condition Identifier: All message properties (application, JMS, provider) and Message headers
except:
■ JMSDestination, JMSReplyTo, JMSRedelivered, JMSExpiration
● Apache Pulsar doesn’t have native message selector yet
○ Can be achieved via Pulsar Function programming
○ PIP-105 (maybe version 2.10?)
● Starlight JMS API emulates this feature
○ Message acknowledged and discarded at the client side
■ Negative acknowledgement for Shared consumer
Unsupported and Emulated Behaviors
DataStax Starlight API for JMS
● Not all JMS features are relevant or supported in Apache Pulsar
● Starlight JMS emulates most of these features
○ Message selector
○ Per-message TTL
○ Message priority
○ NoLocal subscription
○ Temporary destination
○ … …
● Implementation Detail Document
Security
DataStax Starlight API for JMS
● JMS spec doesn’t provide security features for message integration or privacy control
○ JMS provider is expected to implement it
● Starlight JMS relays security control completely to Pulsar
○ ConnectionFactory Configuration Map
○ Pluggable Authentication
■ TLS, JWT, Authnz, Kerberos, OAuth2.0
■ Do NOT support simple username/password authentication
○ Authorization
■ Admin role (Cluster, Tenant)
■ Non-admin role: produce, consume, or both
○ Transportation TLS Encryption
○ End-to-end message encryption
○ OpenID Integration, e.g. Keycloak (DataStax Luna Streaming)
Jakarta EE Integration
DataStax Starlight API for JMS
● Java EE Connector Architecture (JCA) defines a standard
architecture for Java EE systems to external Enterprise
Information Systems (EIS), e.g. databases and messaging
systems.
● Resource Adaptor (RA): deployable Java EE component for
communication between a Java EE application and an EIS using
JCA specification.
○ Resource Adapter Archive (RAR) file
● Starlight JMS Resource Adaptor
○ Main ResourceAdapter implementation
■ com.datastax.oss.pulsar.jms.rar.PulsarResourceAdapter
○ Outbound connection implementation
■ com.datastax.oss.pulsar.jms.rar.PulsarManagedConnecti
onFactory
○ Inbound Message implementation
■ com.datastax.oss.pulsar.jms.rar.PulsarActivationSpec
○ Resource Adaptor Configuration
■ Same as ConnectionFactory connection properties
■ JSON format
JNDI Integration
DataStax Starlight API for JMS
● Use JNDI to get the Administered object reference
○ ConnectionFactory
○ Destination (Queue and Topic)
● Starlight JMS Initial JNDI
○ Dummy implementation at the moment
■ Context.INITIAL_CONTEXT_FACTORY
● com.datastax.oss.pulsar.jms.jndi.PulsarInitialContextFactory
■ Context.PROVIDER_URL
● pulsar://localhost:6650
○ Need to enhanced with an actual JNDI service provider
■ LDAP, RMI Registry, DNS, CORBA COS
Summary
Summary
● JMS is still the dominating messaging technology for many large enterprises
● JMS is an outdated technology facing many challenges
○ Functional challenges
○ Non-functional challenges
● Apache Pulsar is THE replacing technology
○ Message persistence, replication, and time travel
○ Unified messaging semantics - Queuing and Pub/Sub
○ Unified messaging and streaming
○ Fast and low impact horizontal scaling and disaster recovery
○ Built-in, robust geo-replication and multi-tenancy
○ Cloud native and completely open source
● Starlight JMS is the tool to bridge the gap
Outline
Summary
● Starlight JMS API
○ GitHub Repo: https://github.com/datastax/pulsar-jms
○ DataStax Doc: https://docs.datastax.com/en/fast-pulsar-jms/docs/1.1/index.html
● Blog Post
○ Fast JMS for Apache Pulsar: Modernize and Reduce Costs with Blazing Performance
○ How to Migrate a JMS Application to Apache Pulsar Using Starlight for JMS API
● Sample Code
○ Starlight JMS Internal Examples
○ Pulsar JMS Workshop
Resources
THANK YOU FOR
WATCHING

Weitere ähnliche Inhalte

Was ist angesagt?

Kafka Streams: What it is, and how to use it?
Kafka Streams: What it is, and how to use it?Kafka Streams: What it is, and how to use it?
Kafka Streams: What it is, and how to use it?confluent
 
Kafka pub sub demo
Kafka pub sub demoKafka pub sub demo
Kafka pub sub demoSrish Kumar
 
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안SANG WON PARK
 
Securing Kafka
Securing Kafka Securing Kafka
Securing Kafka confluent
 
Data power use cases
Data power use casesData power use cases
Data power use casessflynn073
 
Designing Event-Driven Applications with Apache NiFi, Apache Flink, Apache Sp...
Designing Event-Driven Applications with Apache NiFi, Apache Flink, Apache Sp...Designing Event-Driven Applications with Apache NiFi, Apache Flink, Apache Sp...
Designing Event-Driven Applications with Apache NiFi, Apache Flink, Apache Sp...Timothy Spann
 
Kafka Tutorial: Kafka Security
Kafka Tutorial: Kafka SecurityKafka Tutorial: Kafka Security
Kafka Tutorial: Kafka SecurityJean-Paul Azar
 
Stream processing using Kafka
Stream processing using KafkaStream processing using Kafka
Stream processing using KafkaKnoldus Inc.
 
Apache Kafka Introduction
Apache Kafka IntroductionApache Kafka Introduction
Apache Kafka IntroductionAmita Mirajkar
 
Apache Kafka - Martin Podval
Apache Kafka - Martin PodvalApache Kafka - Martin Podval
Apache Kafka - Martin PodvalMartin Podval
 
Apache Kafka vs RabbitMQ: Fit For Purpose / Decision Tree
Apache Kafka vs RabbitMQ: Fit For Purpose / Decision TreeApache Kafka vs RabbitMQ: Fit For Purpose / Decision Tree
Apache Kafka vs RabbitMQ: Fit For Purpose / Decision TreeSlim Baltagi
 
Kafka Security 101 and Real-World Tips
Kafka Security 101 and Real-World Tips Kafka Security 101 and Real-World Tips
Kafka Security 101 and Real-World Tips confluent
 
Visualizing Kafka Security
Visualizing Kafka SecurityVisualizing Kafka Security
Visualizing Kafka SecurityDataWorks Summit
 
Elastic - ELK, Logstash & Kibana
Elastic - ELK, Logstash & KibanaElastic - ELK, Logstash & Kibana
Elastic - ELK, Logstash & KibanaSpringPeople
 
Radius vs. Tacacs+
Radius vs. Tacacs+Radius vs. Tacacs+
Radius vs. Tacacs+Netwax Lab
 

Was ist angesagt? (20)

Kafka Streams: What it is, and how to use it?
Kafka Streams: What it is, and how to use it?Kafka Streams: What it is, and how to use it?
Kafka Streams: What it is, and how to use it?
 
Kafka pub sub demo
Kafka pub sub demoKafka pub sub demo
Kafka pub sub demo
 
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
 
Securing Kafka
Securing Kafka Securing Kafka
Securing Kafka
 
Data power use cases
Data power use casesData power use cases
Data power use cases
 
Apache kafka
Apache kafkaApache kafka
Apache kafka
 
Designing Event-Driven Applications with Apache NiFi, Apache Flink, Apache Sp...
Designing Event-Driven Applications with Apache NiFi, Apache Flink, Apache Sp...Designing Event-Driven Applications with Apache NiFi, Apache Flink, Apache Sp...
Designing Event-Driven Applications with Apache NiFi, Apache Flink, Apache Sp...
 
Avro
AvroAvro
Avro
 
Kafka Tutorial: Kafka Security
Kafka Tutorial: Kafka SecurityKafka Tutorial: Kafka Security
Kafka Tutorial: Kafka Security
 
Stream processing using Kafka
Stream processing using KafkaStream processing using Kafka
Stream processing using Kafka
 
Apache Kafka Introduction
Apache Kafka IntroductionApache Kafka Introduction
Apache Kafka Introduction
 
Apache Kafka - Martin Podval
Apache Kafka - Martin PodvalApache Kafka - Martin Podval
Apache Kafka - Martin Podval
 
Apache Kafka vs RabbitMQ: Fit For Purpose / Decision Tree
Apache Kafka vs RabbitMQ: Fit For Purpose / Decision TreeApache Kafka vs RabbitMQ: Fit For Purpose / Decision Tree
Apache Kafka vs RabbitMQ: Fit For Purpose / Decision Tree
 
Kafka basics
Kafka basicsKafka basics
Kafka basics
 
Kafka Security 101 and Real-World Tips
Kafka Security 101 and Real-World Tips Kafka Security 101 and Real-World Tips
Kafka Security 101 and Real-World Tips
 
RabbitMQ
RabbitMQRabbitMQ
RabbitMQ
 
Visualizing Kafka Security
Visualizing Kafka SecurityVisualizing Kafka Security
Visualizing Kafka Security
 
Elastic - ELK, Logstash & Kibana
Elastic - ELK, Logstash & KibanaElastic - ELK, Logstash & Kibana
Elastic - ELK, Logstash & Kibana
 
Radius vs. Tacacs+
Radius vs. Tacacs+Radius vs. Tacacs+
Radius vs. Tacacs+
 
CNCF opa
CNCF opaCNCF opa
CNCF opa
 

Ähnlich wie Using Apache Pulsar as a Modern, Scalable, High Performing JMS Platform - Puslar Summit Asia 2021

Ranker jms implementation
Ranker jms implementationRanker jms implementation
Ranker jms implementationEosSoftware
 
Using SCTP with Scamper and Netty
Using SCTP with Scamper and NettyUsing SCTP with Scamper and Netty
Using SCTP with Scamper and NettyTim Boudreau
 
Jms introduction
Jms introductionJms introduction
Jms introductionBui Kiet
 
Using the JMS 2.0 API with Apache Pulsar - Pulsar Virtual Summit Europe 2021
Using the JMS 2.0 API with Apache Pulsar - Pulsar Virtual Summit Europe 2021Using the JMS 2.0 API with Apache Pulsar - Pulsar Virtual Summit Europe 2021
Using the JMS 2.0 API with Apache Pulsar - Pulsar Virtual Summit Europe 2021StreamNative
 
Machine Intelligence Guild_ Build ML Enhanced Event Streaming Applications wi...
Machine Intelligence Guild_ Build ML Enhanced Event Streaming Applications wi...Machine Intelligence Guild_ Build ML Enhanced Event Streaming Applications wi...
Machine Intelligence Guild_ Build ML Enhanced Event Streaming Applications wi...Timothy Spann
 
Lightbend Lagom: Microservices Just Right
Lightbend Lagom: Microservices Just RightLightbend Lagom: Microservices Just Right
Lightbend Lagom: Microservices Just Rightmircodotta
 
Taking Your Enterprise to the Next Level with WSO2 Message Broker and WSO2 En...
Taking Your Enterprise to the Next Level with WSO2 Message Broker and WSO2 En...Taking Your Enterprise to the Next Level with WSO2 Message Broker and WSO2 En...
Taking Your Enterprise to the Next Level with WSO2 Message Broker and WSO2 En...WSO2
 
Understanding JMS Integration Patterns
Understanding JMS Integration Patterns Understanding JMS Integration Patterns
Understanding JMS Integration Patterns WSO2
 
Apache stratos (incubation) technical deep dive
Apache stratos (incubation) technical deep diveApache stratos (incubation) technical deep dive
Apache stratos (incubation) technical deep diveLakmal Warusawithana
 
Rabbit MQ introduction
Rabbit MQ introductionRabbit MQ introduction
Rabbit MQ introductionSitg Yao
 
OSA Con 2022: Streaming Data Made Easy
OSA Con 2022:  Streaming Data Made EasyOSA Con 2022:  Streaming Data Made Easy
OSA Con 2022: Streaming Data Made EasyTimothy Spann
 
OSA Con 2022 - Streaming Data Made Easy - Tim Spann & David Kjerrumgaard - St...
OSA Con 2022 - Streaming Data Made Easy - Tim Spann & David Kjerrumgaard - St...OSA Con 2022 - Streaming Data Made Easy - Tim Spann & David Kjerrumgaard - St...
OSA Con 2022 - Streaming Data Made Easy - Tim Spann & David Kjerrumgaard - St...Altinity Ltd
 
Mom those things v1
Mom those things v1 Mom those things v1
Mom those things v1 von gosling
 

Ähnlich wie Using Apache Pulsar as a Modern, Scalable, High Performing JMS Platform - Puslar Summit Asia 2021 (20)

Messaging in Java
Messaging in JavaMessaging in Java
Messaging in Java
 
Ranker jms implementation
Ranker jms implementationRanker jms implementation
Ranker jms implementation
 
Jms
JmsJms
Jms
 
Using SCTP with Scamper and Netty
Using SCTP with Scamper and NettyUsing SCTP with Scamper and Netty
Using SCTP with Scamper and Netty
 
Jms introduction
Jms introductionJms introduction
Jms introduction
 
Using the JMS 2.0 API with Apache Pulsar - Pulsar Virtual Summit Europe 2021
Using the JMS 2.0 API with Apache Pulsar - Pulsar Virtual Summit Europe 2021Using the JMS 2.0 API with Apache Pulsar - Pulsar Virtual Summit Europe 2021
Using the JMS 2.0 API with Apache Pulsar - Pulsar Virtual Summit Europe 2021
 
Machine Intelligence Guild_ Build ML Enhanced Event Streaming Applications wi...
Machine Intelligence Guild_ Build ML Enhanced Event Streaming Applications wi...Machine Intelligence Guild_ Build ML Enhanced Event Streaming Applications wi...
Machine Intelligence Guild_ Build ML Enhanced Event Streaming Applications wi...
 
Weblogic - Introduction to configure JMS
Weblogic  - Introduction to configure JMSWeblogic  - Introduction to configure JMS
Weblogic - Introduction to configure JMS
 
Lightbend Lagom: Microservices Just Right
Lightbend Lagom: Microservices Just RightLightbend Lagom: Microservices Just Right
Lightbend Lagom: Microservices Just Right
 
Taking Your Enterprise to the Next Level with WSO2 Message Broker and WSO2 En...
Taking Your Enterprise to the Next Level with WSO2 Message Broker and WSO2 En...Taking Your Enterprise to the Next Level with WSO2 Message Broker and WSO2 En...
Taking Your Enterprise to the Next Level with WSO2 Message Broker and WSO2 En...
 
Understanding JMS Integration Patterns
Understanding JMS Integration Patterns Understanding JMS Integration Patterns
Understanding JMS Integration Patterns
 
Apache stratos (incubation) technical deep dive
Apache stratos (incubation) technical deep diveApache stratos (incubation) technical deep dive
Apache stratos (incubation) technical deep dive
 
Jms
JmsJms
Jms
 
Jms
JmsJms
Jms
 
Jms
JmsJms
Jms
 
Rabbit MQ introduction
Rabbit MQ introductionRabbit MQ introduction
Rabbit MQ introduction
 
OSA Con 2022: Streaming Data Made Easy
OSA Con 2022:  Streaming Data Made EasyOSA Con 2022:  Streaming Data Made Easy
OSA Con 2022: Streaming Data Made Easy
 
OSA Con 2022 - Streaming Data Made Easy - Tim Spann & David Kjerrumgaard - St...
OSA Con 2022 - Streaming Data Made Easy - Tim Spann & David Kjerrumgaard - St...OSA Con 2022 - Streaming Data Made Easy - Tim Spann & David Kjerrumgaard - St...
OSA Con 2022 - Streaming Data Made Easy - Tim Spann & David Kjerrumgaard - St...
 
Mom those things v1
Mom those things v1 Mom those things v1
Mom those things v1
 
Mule jms
Mule   jmsMule   jms
Mule jms
 

Mehr von StreamNative

Is Using KoP (Kafka-on-Pulsar) a Good Idea? - Pulsar Summit SF 2022
Is Using KoP (Kafka-on-Pulsar) a Good Idea? - Pulsar Summit SF 2022Is Using KoP (Kafka-on-Pulsar) a Good Idea? - Pulsar Summit SF 2022
Is Using KoP (Kafka-on-Pulsar) a Good Idea? - Pulsar Summit SF 2022StreamNative
 
Building an Asynchronous Application Framework with Python and Pulsar - Pulsa...
Building an Asynchronous Application Framework with Python and Pulsar - Pulsa...Building an Asynchronous Application Framework with Python and Pulsar - Pulsa...
Building an Asynchronous Application Framework with Python and Pulsar - Pulsa...StreamNative
 
Blue-green deploys with Pulsar & Envoy in an event-driven microservice ecosys...
Blue-green deploys with Pulsar & Envoy in an event-driven microservice ecosys...Blue-green deploys with Pulsar & Envoy in an event-driven microservice ecosys...
Blue-green deploys with Pulsar & Envoy in an event-driven microservice ecosys...StreamNative
 
Distributed Database Design Decisions to Support High Performance Event Strea...
Distributed Database Design Decisions to Support High Performance Event Strea...Distributed Database Design Decisions to Support High Performance Event Strea...
Distributed Database Design Decisions to Support High Performance Event Strea...StreamNative
 
Simplify Pulsar Functions Development with SQL - Pulsar Summit SF 2022
Simplify Pulsar Functions Development with SQL - Pulsar Summit SF 2022Simplify Pulsar Functions Development with SQL - Pulsar Summit SF 2022
Simplify Pulsar Functions Development with SQL - Pulsar Summit SF 2022StreamNative
 
Towards a ZooKeeper-less Pulsar, etcd, etcd, etcd. - Pulsar Summit SF 2022
Towards a ZooKeeper-less Pulsar, etcd, etcd, etcd. - Pulsar Summit SF 2022Towards a ZooKeeper-less Pulsar, etcd, etcd, etcd. - Pulsar Summit SF 2022
Towards a ZooKeeper-less Pulsar, etcd, etcd, etcd. - Pulsar Summit SF 2022StreamNative
 
Validating Apache Pulsar’s Behavior under Failure Conditions - Pulsar Summit ...
Validating Apache Pulsar’s Behavior under Failure Conditions - Pulsar Summit ...Validating Apache Pulsar’s Behavior under Failure Conditions - Pulsar Summit ...
Validating Apache Pulsar’s Behavior under Failure Conditions - Pulsar Summit ...StreamNative
 
Cross the Streams! Creating Streaming Data Pipelines with Apache Flink + Apac...
Cross the Streams! Creating Streaming Data Pipelines with Apache Flink + Apac...Cross the Streams! Creating Streaming Data Pipelines with Apache Flink + Apac...
Cross the Streams! Creating Streaming Data Pipelines with Apache Flink + Apac...StreamNative
 
Message Redelivery: An Unexpected Journey - Pulsar Summit SF 2022
Message Redelivery: An Unexpected Journey - Pulsar Summit SF 2022Message Redelivery: An Unexpected Journey - Pulsar Summit SF 2022
Message Redelivery: An Unexpected Journey - Pulsar Summit SF 2022StreamNative
 
Unlocking the Power of Lakehouse Architectures with Apache Pulsar and Apache ...
Unlocking the Power of Lakehouse Architectures with Apache Pulsar and Apache ...Unlocking the Power of Lakehouse Architectures with Apache Pulsar and Apache ...
Unlocking the Power of Lakehouse Architectures with Apache Pulsar and Apache ...StreamNative
 
Understanding Broker Load Balancing - Pulsar Summit SF 2022
Understanding Broker Load Balancing - Pulsar Summit SF 2022Understanding Broker Load Balancing - Pulsar Summit SF 2022
Understanding Broker Load Balancing - Pulsar Summit SF 2022StreamNative
 
Building an Asynchronous Application Framework with Python and Pulsar - Pulsa...
Building an Asynchronous Application Framework with Python and Pulsar - Pulsa...Building an Asynchronous Application Framework with Python and Pulsar - Pulsa...
Building an Asynchronous Application Framework with Python and Pulsar - Pulsa...StreamNative
 
Pulsar's Journey in Yahoo!: On-prem, Cloud and Hybrid - Pulsar Summit SF 2022
Pulsar's Journey in Yahoo!: On-prem, Cloud and Hybrid - Pulsar Summit SF 2022Pulsar's Journey in Yahoo!: On-prem, Cloud and Hybrid - Pulsar Summit SF 2022
Pulsar's Journey in Yahoo!: On-prem, Cloud and Hybrid - Pulsar Summit SF 2022StreamNative
 
Event-Driven Applications Done Right - Pulsar Summit SF 2022
Event-Driven Applications Done Right - Pulsar Summit SF 2022Event-Driven Applications Done Right - Pulsar Summit SF 2022
Event-Driven Applications Done Right - Pulsar Summit SF 2022StreamNative
 
Pulsar @ Scale. 200M RPM and 1K instances - Pulsar Summit SF 2022
Pulsar @ Scale. 200M RPM and 1K instances - Pulsar Summit SF 2022Pulsar @ Scale. 200M RPM and 1K instances - Pulsar Summit SF 2022
Pulsar @ Scale. 200M RPM and 1K instances - Pulsar Summit SF 2022StreamNative
 
Data Democracy: Journey to User-Facing Analytics - Pulsar Summit SF 2022
Data Democracy: Journey to User-Facing Analytics - Pulsar Summit SF 2022Data Democracy: Journey to User-Facing Analytics - Pulsar Summit SF 2022
Data Democracy: Journey to User-Facing Analytics - Pulsar Summit SF 2022StreamNative
 
Beam + Pulsar: Powerful Stream Processing at Scale - Pulsar Summit SF 2022
Beam + Pulsar: Powerful Stream Processing at Scale - Pulsar Summit SF 2022Beam + Pulsar: Powerful Stream Processing at Scale - Pulsar Summit SF 2022
Beam + Pulsar: Powerful Stream Processing at Scale - Pulsar Summit SF 2022StreamNative
 
Welcome and Opening Remarks - Pulsar Summit SF 2022
Welcome and Opening Remarks - Pulsar Summit SF 2022Welcome and Opening Remarks - Pulsar Summit SF 2022
Welcome and Opening Remarks - Pulsar Summit SF 2022StreamNative
 
Log System As Backbone – How We Built the World’s Most Advanced Vector Databa...
Log System As Backbone – How We Built the World’s Most Advanced Vector Databa...Log System As Backbone – How We Built the World’s Most Advanced Vector Databa...
Log System As Backbone – How We Built the World’s Most Advanced Vector Databa...StreamNative
 
MoP(MQTT on Pulsar) - a Powerful Tool for Apache Pulsar in IoT - Pulsar Summi...
MoP(MQTT on Pulsar) - a Powerful Tool for Apache Pulsar in IoT - Pulsar Summi...MoP(MQTT on Pulsar) - a Powerful Tool for Apache Pulsar in IoT - Pulsar Summi...
MoP(MQTT on Pulsar) - a Powerful Tool for Apache Pulsar in IoT - Pulsar Summi...StreamNative
 

Mehr von StreamNative (20)

Is Using KoP (Kafka-on-Pulsar) a Good Idea? - Pulsar Summit SF 2022
Is Using KoP (Kafka-on-Pulsar) a Good Idea? - Pulsar Summit SF 2022Is Using KoP (Kafka-on-Pulsar) a Good Idea? - Pulsar Summit SF 2022
Is Using KoP (Kafka-on-Pulsar) a Good Idea? - Pulsar Summit SF 2022
 
Building an Asynchronous Application Framework with Python and Pulsar - Pulsa...
Building an Asynchronous Application Framework with Python and Pulsar - Pulsa...Building an Asynchronous Application Framework with Python and Pulsar - Pulsa...
Building an Asynchronous Application Framework with Python and Pulsar - Pulsa...
 
Blue-green deploys with Pulsar & Envoy in an event-driven microservice ecosys...
Blue-green deploys with Pulsar & Envoy in an event-driven microservice ecosys...Blue-green deploys with Pulsar & Envoy in an event-driven microservice ecosys...
Blue-green deploys with Pulsar & Envoy in an event-driven microservice ecosys...
 
Distributed Database Design Decisions to Support High Performance Event Strea...
Distributed Database Design Decisions to Support High Performance Event Strea...Distributed Database Design Decisions to Support High Performance Event Strea...
Distributed Database Design Decisions to Support High Performance Event Strea...
 
Simplify Pulsar Functions Development with SQL - Pulsar Summit SF 2022
Simplify Pulsar Functions Development with SQL - Pulsar Summit SF 2022Simplify Pulsar Functions Development with SQL - Pulsar Summit SF 2022
Simplify Pulsar Functions Development with SQL - Pulsar Summit SF 2022
 
Towards a ZooKeeper-less Pulsar, etcd, etcd, etcd. - Pulsar Summit SF 2022
Towards a ZooKeeper-less Pulsar, etcd, etcd, etcd. - Pulsar Summit SF 2022Towards a ZooKeeper-less Pulsar, etcd, etcd, etcd. - Pulsar Summit SF 2022
Towards a ZooKeeper-less Pulsar, etcd, etcd, etcd. - Pulsar Summit SF 2022
 
Validating Apache Pulsar’s Behavior under Failure Conditions - Pulsar Summit ...
Validating Apache Pulsar’s Behavior under Failure Conditions - Pulsar Summit ...Validating Apache Pulsar’s Behavior under Failure Conditions - Pulsar Summit ...
Validating Apache Pulsar’s Behavior under Failure Conditions - Pulsar Summit ...
 
Cross the Streams! Creating Streaming Data Pipelines with Apache Flink + Apac...
Cross the Streams! Creating Streaming Data Pipelines with Apache Flink + Apac...Cross the Streams! Creating Streaming Data Pipelines with Apache Flink + Apac...
Cross the Streams! Creating Streaming Data Pipelines with Apache Flink + Apac...
 
Message Redelivery: An Unexpected Journey - Pulsar Summit SF 2022
Message Redelivery: An Unexpected Journey - Pulsar Summit SF 2022Message Redelivery: An Unexpected Journey - Pulsar Summit SF 2022
Message Redelivery: An Unexpected Journey - Pulsar Summit SF 2022
 
Unlocking the Power of Lakehouse Architectures with Apache Pulsar and Apache ...
Unlocking the Power of Lakehouse Architectures with Apache Pulsar and Apache ...Unlocking the Power of Lakehouse Architectures with Apache Pulsar and Apache ...
Unlocking the Power of Lakehouse Architectures with Apache Pulsar and Apache ...
 
Understanding Broker Load Balancing - Pulsar Summit SF 2022
Understanding Broker Load Balancing - Pulsar Summit SF 2022Understanding Broker Load Balancing - Pulsar Summit SF 2022
Understanding Broker Load Balancing - Pulsar Summit SF 2022
 
Building an Asynchronous Application Framework with Python and Pulsar - Pulsa...
Building an Asynchronous Application Framework with Python and Pulsar - Pulsa...Building an Asynchronous Application Framework with Python and Pulsar - Pulsa...
Building an Asynchronous Application Framework with Python and Pulsar - Pulsa...
 
Pulsar's Journey in Yahoo!: On-prem, Cloud and Hybrid - Pulsar Summit SF 2022
Pulsar's Journey in Yahoo!: On-prem, Cloud and Hybrid - Pulsar Summit SF 2022Pulsar's Journey in Yahoo!: On-prem, Cloud and Hybrid - Pulsar Summit SF 2022
Pulsar's Journey in Yahoo!: On-prem, Cloud and Hybrid - Pulsar Summit SF 2022
 
Event-Driven Applications Done Right - Pulsar Summit SF 2022
Event-Driven Applications Done Right - Pulsar Summit SF 2022Event-Driven Applications Done Right - Pulsar Summit SF 2022
Event-Driven Applications Done Right - Pulsar Summit SF 2022
 
Pulsar @ Scale. 200M RPM and 1K instances - Pulsar Summit SF 2022
Pulsar @ Scale. 200M RPM and 1K instances - Pulsar Summit SF 2022Pulsar @ Scale. 200M RPM and 1K instances - Pulsar Summit SF 2022
Pulsar @ Scale. 200M RPM and 1K instances - Pulsar Summit SF 2022
 
Data Democracy: Journey to User-Facing Analytics - Pulsar Summit SF 2022
Data Democracy: Journey to User-Facing Analytics - Pulsar Summit SF 2022Data Democracy: Journey to User-Facing Analytics - Pulsar Summit SF 2022
Data Democracy: Journey to User-Facing Analytics - Pulsar Summit SF 2022
 
Beam + Pulsar: Powerful Stream Processing at Scale - Pulsar Summit SF 2022
Beam + Pulsar: Powerful Stream Processing at Scale - Pulsar Summit SF 2022Beam + Pulsar: Powerful Stream Processing at Scale - Pulsar Summit SF 2022
Beam + Pulsar: Powerful Stream Processing at Scale - Pulsar Summit SF 2022
 
Welcome and Opening Remarks - Pulsar Summit SF 2022
Welcome and Opening Remarks - Pulsar Summit SF 2022Welcome and Opening Remarks - Pulsar Summit SF 2022
Welcome and Opening Remarks - Pulsar Summit SF 2022
 
Log System As Backbone – How We Built the World’s Most Advanced Vector Databa...
Log System As Backbone – How We Built the World’s Most Advanced Vector Databa...Log System As Backbone – How We Built the World’s Most Advanced Vector Databa...
Log System As Backbone – How We Built the World’s Most Advanced Vector Databa...
 
MoP(MQTT on Pulsar) - a Powerful Tool for Apache Pulsar in IoT - Pulsar Summi...
MoP(MQTT on Pulsar) - a Powerful Tool for Apache Pulsar in IoT - Pulsar Summi...MoP(MQTT on Pulsar) - a Powerful Tool for Apache Pulsar in IoT - Pulsar Summi...
MoP(MQTT on Pulsar) - a Powerful Tool for Apache Pulsar in IoT - Pulsar Summi...
 

Kürzlich hochgeladen

Call Girls In Ashram Chowk Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Ashram Chowk Delhi 💯Call Us 🔝8264348440🔝Call Girls In Ashram Chowk Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Ashram Chowk Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
Hot Service (+9316020077 ) Goa Call Girls Real Photos and Genuine Service
Hot Service (+9316020077 ) Goa  Call Girls Real Photos and Genuine ServiceHot Service (+9316020077 ) Goa  Call Girls Real Photos and Genuine Service
Hot Service (+9316020077 ) Goa Call Girls Real Photos and Genuine Servicesexy call girls service in goa
 
VIP 7001035870 Find & Meet Hyderabad Call Girls LB Nagar high-profile Call Girl
VIP 7001035870 Find & Meet Hyderabad Call Girls LB Nagar high-profile Call GirlVIP 7001035870 Find & Meet Hyderabad Call Girls LB Nagar high-profile Call Girl
VIP 7001035870 Find & Meet Hyderabad Call Girls LB Nagar high-profile Call Girladitipandeya
 
Networking in the Penumbra presented by Geoff Huston at NZNOG
Networking in the Penumbra presented by Geoff Huston at NZNOGNetworking in the Penumbra presented by Geoff Huston at NZNOG
Networking in the Penumbra presented by Geoff Huston at NZNOGAPNIC
 
'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...
'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...
'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...APNIC
 
Hot Call Girls |Delhi |Hauz Khas ☎ 9711199171 Book Your One night Stand
Hot Call Girls |Delhi |Hauz Khas ☎ 9711199171 Book Your One night StandHot Call Girls |Delhi |Hauz Khas ☎ 9711199171 Book Your One night Stand
Hot Call Girls |Delhi |Hauz Khas ☎ 9711199171 Book Your One night Standkumarajju5765
 
VIP Kolkata Call Girl Alambazar 👉 8250192130 Available With Room
VIP Kolkata Call Girl Alambazar 👉 8250192130  Available With RoomVIP Kolkata Call Girl Alambazar 👉 8250192130  Available With Room
VIP Kolkata Call Girl Alambazar 👉 8250192130 Available With Roomdivyansh0kumar0
 
Challengers I Told Ya ShirtChallengers I Told Ya Shirt
Challengers I Told Ya ShirtChallengers I Told Ya ShirtChallengers I Told Ya ShirtChallengers I Told Ya Shirt
Challengers I Told Ya ShirtChallengers I Told Ya Shirtrahman018755
 
Delhi Call Girls Rohini 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls Rohini 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip CallDelhi Call Girls Rohini 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls Rohini 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Callshivangimorya083
 
VIP Kolkata Call Girl Dum Dum 👉 8250192130 Available With Room
VIP Kolkata Call Girl Dum Dum 👉 8250192130  Available With RoomVIP Kolkata Call Girl Dum Dum 👉 8250192130  Available With Room
VIP Kolkata Call Girl Dum Dum 👉 8250192130 Available With Roomdivyansh0kumar0
 
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...Diya Sharma
 
GDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark Web
GDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark WebGDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark Web
GDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark WebJames Anderson
 
VIP Call Girls Kolkata Ananya 🤌 8250192130 🚀 Vip Call Girls Kolkata
VIP Call Girls Kolkata Ananya 🤌  8250192130 🚀 Vip Call Girls KolkataVIP Call Girls Kolkata Ananya 🤌  8250192130 🚀 Vip Call Girls Kolkata
VIP Call Girls Kolkata Ananya 🤌 8250192130 🚀 Vip Call Girls Kolkataanamikaraghav4
 
Russian Call girls in Dubai +971563133746 Dubai Call girls
Russian  Call girls in Dubai +971563133746 Dubai  Call girlsRussian  Call girls in Dubai +971563133746 Dubai  Call girls
Russian Call girls in Dubai +971563133746 Dubai Call girlsstephieert
 
Chennai Call Girls Alwarpet Phone 🍆 8250192130 👅 celebrity escorts service
Chennai Call Girls Alwarpet Phone 🍆 8250192130 👅 celebrity escorts serviceChennai Call Girls Alwarpet Phone 🍆 8250192130 👅 celebrity escorts service
Chennai Call Girls Alwarpet Phone 🍆 8250192130 👅 celebrity escorts servicevipmodelshub1
 
Low Rate Young Call Girls in Sector 63 Mamura Noida ✔️☆9289244007✔️☆ Female E...
Low Rate Young Call Girls in Sector 63 Mamura Noida ✔️☆9289244007✔️☆ Female E...Low Rate Young Call Girls in Sector 63 Mamura Noida ✔️☆9289244007✔️☆ Female E...
Low Rate Young Call Girls in Sector 63 Mamura Noida ✔️☆9289244007✔️☆ Female E...SofiyaSharma5
 
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
Russian Call girl in Ajman +971563133746 Ajman Call girl Service
Russian Call girl in Ajman +971563133746 Ajman Call girl ServiceRussian Call girl in Ajman +971563133746 Ajman Call girl Service
Russian Call girl in Ajman +971563133746 Ajman Call girl Servicegwenoracqe6
 

Kürzlich hochgeladen (20)

Call Girls In Ashram Chowk Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Ashram Chowk Delhi 💯Call Us 🔝8264348440🔝Call Girls In Ashram Chowk Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Ashram Chowk Delhi 💯Call Us 🔝8264348440🔝
 
Hot Service (+9316020077 ) Goa Call Girls Real Photos and Genuine Service
Hot Service (+9316020077 ) Goa  Call Girls Real Photos and Genuine ServiceHot Service (+9316020077 ) Goa  Call Girls Real Photos and Genuine Service
Hot Service (+9316020077 ) Goa Call Girls Real Photos and Genuine Service
 
VIP 7001035870 Find & Meet Hyderabad Call Girls LB Nagar high-profile Call Girl
VIP 7001035870 Find & Meet Hyderabad Call Girls LB Nagar high-profile Call GirlVIP 7001035870 Find & Meet Hyderabad Call Girls LB Nagar high-profile Call Girl
VIP 7001035870 Find & Meet Hyderabad Call Girls LB Nagar high-profile Call Girl
 
Networking in the Penumbra presented by Geoff Huston at NZNOG
Networking in the Penumbra presented by Geoff Huston at NZNOGNetworking in the Penumbra presented by Geoff Huston at NZNOG
Networking in the Penumbra presented by Geoff Huston at NZNOG
 
Rohini Sector 6 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
Rohini Sector 6 Call Girls Delhi 9999965857 @Sabina Saikh No AdvanceRohini Sector 6 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
Rohini Sector 6 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
 
'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...
'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...
'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...
 
Hot Call Girls |Delhi |Hauz Khas ☎ 9711199171 Book Your One night Stand
Hot Call Girls |Delhi |Hauz Khas ☎ 9711199171 Book Your One night StandHot Call Girls |Delhi |Hauz Khas ☎ 9711199171 Book Your One night Stand
Hot Call Girls |Delhi |Hauz Khas ☎ 9711199171 Book Your One night Stand
 
VIP Kolkata Call Girl Alambazar 👉 8250192130 Available With Room
VIP Kolkata Call Girl Alambazar 👉 8250192130  Available With RoomVIP Kolkata Call Girl Alambazar 👉 8250192130  Available With Room
VIP Kolkata Call Girl Alambazar 👉 8250192130 Available With Room
 
Challengers I Told Ya ShirtChallengers I Told Ya Shirt
Challengers I Told Ya ShirtChallengers I Told Ya ShirtChallengers I Told Ya ShirtChallengers I Told Ya Shirt
Challengers I Told Ya ShirtChallengers I Told Ya Shirt
 
Delhi Call Girls Rohini 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls Rohini 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip CallDelhi Call Girls Rohini 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls Rohini 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
 
VIP Kolkata Call Girl Dum Dum 👉 8250192130 Available With Room
VIP Kolkata Call Girl Dum Dum 👉 8250192130  Available With RoomVIP Kolkata Call Girl Dum Dum 👉 8250192130  Available With Room
VIP Kolkata Call Girl Dum Dum 👉 8250192130 Available With Room
 
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
 
GDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark Web
GDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark WebGDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark Web
GDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark Web
 
Call Girls In South Ex 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SERVICE
Call Girls In South Ex 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SERVICECall Girls In South Ex 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SERVICE
Call Girls In South Ex 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SERVICE
 
VIP Call Girls Kolkata Ananya 🤌 8250192130 🚀 Vip Call Girls Kolkata
VIP Call Girls Kolkata Ananya 🤌  8250192130 🚀 Vip Call Girls KolkataVIP Call Girls Kolkata Ananya 🤌  8250192130 🚀 Vip Call Girls Kolkata
VIP Call Girls Kolkata Ananya 🤌 8250192130 🚀 Vip Call Girls Kolkata
 
Russian Call girls in Dubai +971563133746 Dubai Call girls
Russian  Call girls in Dubai +971563133746 Dubai  Call girlsRussian  Call girls in Dubai +971563133746 Dubai  Call girls
Russian Call girls in Dubai +971563133746 Dubai Call girls
 
Chennai Call Girls Alwarpet Phone 🍆 8250192130 👅 celebrity escorts service
Chennai Call Girls Alwarpet Phone 🍆 8250192130 👅 celebrity escorts serviceChennai Call Girls Alwarpet Phone 🍆 8250192130 👅 celebrity escorts service
Chennai Call Girls Alwarpet Phone 🍆 8250192130 👅 celebrity escorts service
 
Low Rate Young Call Girls in Sector 63 Mamura Noida ✔️☆9289244007✔️☆ Female E...
Low Rate Young Call Girls in Sector 63 Mamura Noida ✔️☆9289244007✔️☆ Female E...Low Rate Young Call Girls in Sector 63 Mamura Noida ✔️☆9289244007✔️☆ Female E...
Low Rate Young Call Girls in Sector 63 Mamura Noida ✔️☆9289244007✔️☆ Female E...
 
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
 
Russian Call girl in Ajman +971563133746 Ajman Call girl Service
Russian Call girl in Ajman +971563133746 Ajman Call girl ServiceRussian Call girl in Ajman +971563133746 Ajman Call girl Service
Russian Call girl in Ajman +971563133746 Ajman Call girl Service
 

Using Apache Pulsar as a Modern, Scalable, High Performing JMS Platform - Puslar Summit Asia 2021

  • 1. Using Apache Puslar as a Modern, Scalable, High Performing JMS Platform Yabin Meng - Vanguard Solutions Architect @ DataStax
  • 2. Agenda ● Introduction of JMS ● Introduction of Pulsar ● DataStax Starlight API for JMS Deep Dive ● Summary
  • 4. History of JMS ● Jakarta Messaging (formerly called Java Messaging Service), as part of Jakarta Enterprise Edition (EE) specifications ● A standard and generic Java API for message-oriented middleware (MOM) ● JMS 2.0 (backward compatible with JMS 1.1) is still the mainstream Introduction of JMS
  • 5. Messaging Domains Introduction of JMS ● Point to Point (P2P) ○ Queue as the JMS destination ○ Each message is delivered to one and ONLY one receiver ○ No timing dependency between sender and receiver ○ Message acknowledgement is needed ● Publish/Subscribe (Pub/Sub) ○ Topic as the JMS destination ○ Each message is delivered to multiple subscribers ○ Timing dependency between publisher and subscriber ○ Message acknowledgement is not required
  • 6. JMS APIs Introduction of JMS ● JMS API ○ JMS 1.0: Domain specific ○ JMS 1.1 (Classic): ConnectionFactory, Connection, Session, MessageProducer, MessageConsumer ○ JMS 2.0 (Simplified): ConnectionFactory, JMSContext, JMSProducer, JMSConsumer ○ JMS 3.0: Jakarta Messaging Next #242 ● Classic API (1.1) ● Simplified API (2.0)
  • 7. JMS Administration and JNDI Integration Introduction of JMS ● JMS Administration ○ Connection Factory and Destination ○ Maximize JMS client application portability ● JNDI Service Providers ○ Java RMI Registry ○ CORBA common object service (COS) name service ○ LDAP ○ JMS Provider specific
  • 9. What is Pulsar? Introduction of Pulsar ● JMS is an old technology ○ Newer MOM technology like Kafka or Pulsar is needed ● Cloud Native, distributed, and unified messaging and streaming platform ● Apache TLP since Oct. 2018
  • 10. Pulsar Key Differentiators Introduction of Pulsar ● Tiered architecture design ○ Stateless broker ○ Segment-centric data persistence ○ Fast and robust scaling, disaster recovery ● Unified and flexible messaging model ○ Queuing and Pub/Sub ● Native Geo-replication ● Robust and powerful multi-tenancy
  • 11. Pulsar Messaging Semantics Basic Introduction of Pulsar ● Message organization ○ Tenant → Namespace → Topic → Message persistent://my-tenant/my-namespace/my-topic ● Consumer/Subscription ○ Cursor (offset) ○ Subscription types ● Built-in Schema Registry ○ Primitive types ○ Complex types - Avro, Json, Protobuf
  • 13. What is Starlight JMS? DataStax Starlight API for JMS ● DataStax Starlight API suite ○ Make Apache Pulsar as the unified processing platform for other messaging protocols, with minimal impact ■ JMS ■ Kafka ■ RabbitMQ (AMQP 0.9.1) ● Starlight JMS ○ Makes Apache Pulsar as a JMS Provider ○ Fully compatible with JMS 2.0 ■ Backward compatible with JMS 1.1 ○ Passed 98% JMS TCK compliance test ○ Java API ■ Based on Apache Pulsar Java Client API and Admin API ○ Open Source (Apache-2.0 License)
  • 14. Why Starlight JMS? DataStax Starlight API for JMS ● Blazing Fast performance ○ 1M+ msg/s with single-digit latency ● Drop-in replacement for existing JMS applications ● Horizontally scalable JMS ○ Fast and low impact scalability of Apache Pulsar ○ Separation between compute and storage ● Native message re-play in JMS ○ Travel back in time ● Consolidate JMS applications across multiple legacy JMS providers ○ Reduced TCO, Operation Complexity ● Open source ○ Avoid vendor lock-in ● Cloud native ○ K8s
  • 15. JMS to Pulsar Concepts Mapping DataStax Starlight API for JMS JMS Object Pulsar Object JMS Message - Message header and property Pulsar Message - Message property Destination/Topic/Queue Persistent topic (with specified topic name) Temporary Destination/Temporary Topic/Temporary Queue Persistent topic (with randomly generated topic name) MessageProducer/TopicPublisher/QueueSender Producer MessageConsumer/TopicSubscriber/QueueReceiver Consumer (with a subscription) QueueBrowser Reader for a topic
  • 16. Example code DataStax Starlight API for JMS Map<String, Object> configuration = new HashMap<>(); configuration.put("webServiceUrl", "http://localhost:8080"); configuration.put("brokerServiceUrl", "pulsar://localhost:6650"); PulsarConnectionFactory factory = new PulsarConnectionFactory(configuration); try (JMSContext context = factory.createContext()) { Destination destination = context.createQueue("persistent://public/default/test"); context.createProducer().send(destination, "text"); try (JMSConsumer consumer = context.createConsumer(destination)) { String message = consumer.receiveBody(String.class); ... } }
  • 17. Establish Connection DataStax Starlight API for JMS ● Entry Point Objects ○ PulsarConnectionFactory ■ PulsarJMSContext ■ PulsarConnection & PulsarSession ● Connection Properties ○ webServiceUrl and brokerServiceUrl ○ producerConfig and consumerConfig ○ enableTransaction ■ At least Apache Pulsar 2.7.0+ ■ Better with version 2.8.1+ ○ Other Pulsar Client Connection specific configuration ■ Authentication, TLS, etc. ○ Starlight JMS specific configuration ■ jms.systemNamespace ■ … …
  • 18. Create Destinations DataStax Starlight API for JMS ● Persistent Pulsar topics ○ Temporary destinations explicitly deleted when JMS connection is closed Destination Type Pulsar Topic Name Queue Client provided string (<client_string>) If it starts with “persistent://”, then <client_string>; Otherwise, persistent://<jms.systemNamespace>/<client_string> Topic Temporary Queue persistent://<jms.systemNamespace>/jms-temp-queue-<UUID> Temporary Topic persistent://<jms.systemNamespace>/jms-temp-topic-<UUID>
  • 19. Create Producer and Consumer DataStax Starlight API for JMS ● (Producer) Message Send ○ Pulsar producer API ○ Sync and Async mode ■ setAsync(CompletionListener) ● (Consumer) Message Receive ○ Pulsar consumer API ○ Sync and Async mode ■ setMessageListener(MessageLis tener ● (QueueBrowser) Message Receive ○ Pulsar reader API ○ Peek messages in a Queue
  • 20. Create Message DataStax Starlight API for JMS ● JMS Headers ○ Mapped to Pulsar Properties ○ Not all JMS header behavior is relevant in Pulsar ○ Starlight JMS client side emulated behavior ■ JMSReplyTo ■ JMSPriority ■ JMSExpiration ■ … … ● JMS Properties ○ Application specific JMS properties ■ 1-1 mapping to Pulsar Properties ○ Standard JMS properties ■ JMSXGroupID → Pulsar message key ■ … … ■ Others: ignored ○ Vendor specific system JMS properties ■ Not supported ○ Starlight JMS added Property ■ JMSConnectionID ■ JMSPulsarMessageType
  • 21. Create Message, continued DataStax Starlight API for JMS ● JMS Message Body ○ All JMS Message types are supported ○ StreamMessage ■ Stream of Java primitive values ○ MapMessage ■ Key-value pairs (String / Java primitive type) ○ TextMessage ○ ObjectMessage ■ Serializable Java object ○ BytesMessage (Default) ■ Stream of uninterpreted bytes. ● Pulsar Message Payload Type ○ Byte[] ○ JMSPulsarMessageType message property
  • 22. Session Mode and Message Acknowledgement DataStax Starlight API for JMS Session Mode Note AUTO_ACKNOWLEDGE ● Starlight JMS API (runtime) immediately sends a client acknowledgment for each message it delivers to a message consumer. ● From Pulsar server perspective, the messages are acknowledged in synchronous mode. CLIENT_ACKNOWLEDGE ● The message consumer must explicitly call Message.acknowledge() method to acknowledge the receipt of a message. ● Acknowledging a consumed message automatically acknowledges the receipt of all messages that have been delivered by its session. ● From Pulsar server perspective, the messages are acknowledged in asynchronous mode; and the consumer sends out acknowledgements without checking if there is any error. DUPS_OK_ACKNOWLEDGE ● Starlight JMS API (runtime) sends a client acknowledgment for each message it delivers to a message consumer, in asynchronous mode; but it will wait and capture any error in non-blocking way. ● From Pulsar server perspective, this mode is orthogonal with how Pulsar handles message duplication delivery. SESSION_TRANSACTED ● Indicate this session is dealing with JMS message transactions. More on this in the next page.
  • 23. Session Mode and Transacted Messages DataStax Starlight API for JMS ● Enabled in Starlight JMS API when ○ Global ConnectionFactory configuration enableTransaction is set to true ○ Session mode is set to SESSION_TRANSACTED ● Maps to Pulsar Transaction ○ Atomic multi-topic(partition) writes ○ Atomic multi-subscription acknowledgement ● Apache Pulsar version ○ At least version 2.7.0+ ○ Exactly-once semantics: 2.8.1+
  • 24. Delayed Message Delivery DataStax Starlight API for JMS ● JMS spec doesn’t specify how delayed messages should be implemented ● Most JMS Provider implements this using message property ○ message.setLongProperty(“property_name”, long) ● Starlight JMS API ○ producer.setDeliveryDelay(long) ○ Map to Pulsar ■ TypedMessageBuilder.deliverAfter(long delay, TimeUnit unit)
  • 25. Message Selector DataStax Starlight API for JMS ● Message Selector Recap ○ A String based on a subset of the SQL92 conditional expression syntax ○ Condition Identifier: All message properties (application, JMS, provider) and Message headers except: ■ JMSDestination, JMSReplyTo, JMSRedelivered, JMSExpiration ● Apache Pulsar doesn’t have native message selector yet ○ Can be achieved via Pulsar Function programming ○ PIP-105 (maybe version 2.10?) ● Starlight JMS API emulates this feature ○ Message acknowledged and discarded at the client side ■ Negative acknowledgement for Shared consumer
  • 26. Unsupported and Emulated Behaviors DataStax Starlight API for JMS ● Not all JMS features are relevant or supported in Apache Pulsar ● Starlight JMS emulates most of these features ○ Message selector ○ Per-message TTL ○ Message priority ○ NoLocal subscription ○ Temporary destination ○ … … ● Implementation Detail Document
  • 27. Security DataStax Starlight API for JMS ● JMS spec doesn’t provide security features for message integration or privacy control ○ JMS provider is expected to implement it ● Starlight JMS relays security control completely to Pulsar ○ ConnectionFactory Configuration Map ○ Pluggable Authentication ■ TLS, JWT, Authnz, Kerberos, OAuth2.0 ■ Do NOT support simple username/password authentication ○ Authorization ■ Admin role (Cluster, Tenant) ■ Non-admin role: produce, consume, or both ○ Transportation TLS Encryption ○ End-to-end message encryption ○ OpenID Integration, e.g. Keycloak (DataStax Luna Streaming)
  • 28. Jakarta EE Integration DataStax Starlight API for JMS ● Java EE Connector Architecture (JCA) defines a standard architecture for Java EE systems to external Enterprise Information Systems (EIS), e.g. databases and messaging systems. ● Resource Adaptor (RA): deployable Java EE component for communication between a Java EE application and an EIS using JCA specification. ○ Resource Adapter Archive (RAR) file ● Starlight JMS Resource Adaptor ○ Main ResourceAdapter implementation ■ com.datastax.oss.pulsar.jms.rar.PulsarResourceAdapter ○ Outbound connection implementation ■ com.datastax.oss.pulsar.jms.rar.PulsarManagedConnecti onFactory ○ Inbound Message implementation ■ com.datastax.oss.pulsar.jms.rar.PulsarActivationSpec ○ Resource Adaptor Configuration ■ Same as ConnectionFactory connection properties ■ JSON format
  • 29. JNDI Integration DataStax Starlight API for JMS ● Use JNDI to get the Administered object reference ○ ConnectionFactory ○ Destination (Queue and Topic) ● Starlight JMS Initial JNDI ○ Dummy implementation at the moment ■ Context.INITIAL_CONTEXT_FACTORY ● com.datastax.oss.pulsar.jms.jndi.PulsarInitialContextFactory ■ Context.PROVIDER_URL ● pulsar://localhost:6650 ○ Need to enhanced with an actual JNDI service provider ■ LDAP, RMI Registry, DNS, CORBA COS
  • 31. Summary ● JMS is still the dominating messaging technology for many large enterprises ● JMS is an outdated technology facing many challenges ○ Functional challenges ○ Non-functional challenges ● Apache Pulsar is THE replacing technology ○ Message persistence, replication, and time travel ○ Unified messaging semantics - Queuing and Pub/Sub ○ Unified messaging and streaming ○ Fast and low impact horizontal scaling and disaster recovery ○ Built-in, robust geo-replication and multi-tenancy ○ Cloud native and completely open source ● Starlight JMS is the tool to bridge the gap Outline
  • 32. Summary ● Starlight JMS API ○ GitHub Repo: https://github.com/datastax/pulsar-jms ○ DataStax Doc: https://docs.datastax.com/en/fast-pulsar-jms/docs/1.1/index.html ● Blog Post ○ Fast JMS for Apache Pulsar: Modernize and Reduce Costs with Blazing Performance ○ How to Migrate a JMS Application to Apache Pulsar Using Starlight for JMS API ● Sample Code ○ Starlight JMS Internal Examples ○ Pulsar JMS Workshop Resources