SlideShare uma empresa Scribd logo
1 de 33
Baixar para ler offline
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

Mais conteúdo relacionado

Mais procurados

Message queuing telemetry transport (mqtt) id and other type parameters
Message queuing telemetry transport (mqtt) id and other type parametersMessage queuing telemetry transport (mqtt) id and other type parameters
Message queuing telemetry transport (mqtt) id and other type parametersHamdamboy (함담보이)
 
Rest API Security
Rest API SecurityRest API Security
Rest API SecurityStormpath
 
Ip spoofing ppt
Ip spoofing pptIp spoofing ppt
Ip spoofing pptAnushakp9
 
Socket Programming Tutorial
Socket Programming TutorialSocket Programming Tutorial
Socket Programming TutorialJignesh Patel
 
IPSec | Computer Network
IPSec | Computer NetworkIPSec | Computer Network
IPSec | Computer Networkshubham ghimire
 
Introduction vulnérabilité web
Introduction vulnérabilité webIntroduction vulnérabilité web
Introduction vulnérabilité webdavystoffel
 
RESTful services
RESTful servicesRESTful services
RESTful servicesgouthamrv
 
OAuth 2.0 and OpenId Connect
OAuth 2.0 and OpenId ConnectOAuth 2.0 and OpenId Connect
OAuth 2.0 and OpenId ConnectSaran Doraiswamy
 
Security problems in TCP/IP
Security problems in TCP/IPSecurity problems in TCP/IP
Security problems in TCP/IPSukh Sandhu
 
Netcat 101 by-mahesh-beema
Netcat 101 by-mahesh-beemaNetcat 101 by-mahesh-beema
Netcat 101 by-mahesh-beemaRaghunath G
 
Unblocking Stollen Mobile Phones using SS7-MaP vulnerabilities
Unblocking Stollen Mobile Phones using SS7-MaP vulnerabilities Unblocking Stollen Mobile Phones using SS7-MaP vulnerabilities
Unblocking Stollen Mobile Phones using SS7-MaP vulnerabilities Siddharth Rao
 
TLS - Transport Layer Security
TLS - Transport Layer SecurityTLS - Transport Layer Security
TLS - Transport Layer SecurityByronKimani
 
Session initiation-protocol
Session initiation-protocolSession initiation-protocol
Session initiation-protocolSanthosh Somu
 
Session Initiation Protocol
Session Initiation ProtocolSession Initiation Protocol
Session Initiation ProtocolMatt Bynum
 
Administrators guide for avaya communication manager
Administrators guide for avaya communication managerAdministrators guide for avaya communication manager
Administrators guide for avaya communication manageraptivajhc
 
Cross Site Request Forgery (CSRF) Scripting Explained
Cross Site Request Forgery (CSRF) Scripting ExplainedCross Site Request Forgery (CSRF) Scripting Explained
Cross Site Request Forgery (CSRF) Scripting ExplainedValency Networks
 

Mais procurados (20)

Ssl https
Ssl httpsSsl https
Ssl https
 
Message queuing telemetry transport (mqtt) id and other type parameters
Message queuing telemetry transport (mqtt) id and other type parametersMessage queuing telemetry transport (mqtt) id and other type parameters
Message queuing telemetry transport (mqtt) id and other type parameters
 
Rest API Security
Rest API SecurityRest API Security
Rest API Security
 
Ip spoofing ppt
Ip spoofing pptIp spoofing ppt
Ip spoofing ppt
 
Socket Programming Tutorial
Socket Programming TutorialSocket Programming Tutorial
Socket Programming Tutorial
 
IPSec | Computer Network
IPSec | Computer NetworkIPSec | Computer Network
IPSec | Computer Network
 
Introduction vulnérabilité web
Introduction vulnérabilité webIntroduction vulnérabilité web
Introduction vulnérabilité web
 
Sip
SipSip
Sip
 
RESTful services
RESTful servicesRESTful services
RESTful services
 
OAuth 2.0 and OpenId Connect
OAuth 2.0 and OpenId ConnectOAuth 2.0 and OpenId Connect
OAuth 2.0 and OpenId Connect
 
Security problems in TCP/IP
Security problems in TCP/IPSecurity problems in TCP/IP
Security problems in TCP/IP
 
Attacking REST API
Attacking REST APIAttacking REST API
Attacking REST API
 
Xmpp
XmppXmpp
Xmpp
 
Netcat 101 by-mahesh-beema
Netcat 101 by-mahesh-beemaNetcat 101 by-mahesh-beema
Netcat 101 by-mahesh-beema
 
Unblocking Stollen Mobile Phones using SS7-MaP vulnerabilities
Unblocking Stollen Mobile Phones using SS7-MaP vulnerabilities Unblocking Stollen Mobile Phones using SS7-MaP vulnerabilities
Unblocking Stollen Mobile Phones using SS7-MaP vulnerabilities
 
TLS - Transport Layer Security
TLS - Transport Layer SecurityTLS - Transport Layer Security
TLS - Transport Layer Security
 
Session initiation-protocol
Session initiation-protocolSession initiation-protocol
Session initiation-protocol
 
Session Initiation Protocol
Session Initiation ProtocolSession Initiation Protocol
Session Initiation Protocol
 
Administrators guide for avaya communication manager
Administrators guide for avaya communication managerAdministrators guide for avaya communication manager
Administrators guide for avaya communication manager
 
Cross Site Request Forgery (CSRF) Scripting Explained
Cross Site Request Forgery (CSRF) Scripting ExplainedCross Site Request Forgery (CSRF) Scripting Explained
Cross Site Request Forgery (CSRF) Scripting Explained
 

Semelhante a 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
 

Semelhante a 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
 

Mais de 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
 

Mais de 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...
 

Último

➥🔝 7737669865 🔝▻ mehsana Call-girls in Women Seeking Men 🔝mehsana🔝 Escorts...
➥🔝 7737669865 🔝▻ mehsana Call-girls in Women Seeking Men  🔝mehsana🔝   Escorts...➥🔝 7737669865 🔝▻ mehsana Call-girls in Women Seeking Men  🔝mehsana🔝   Escorts...
➥🔝 7737669865 🔝▻ mehsana Call-girls in Women Seeking Men 🔝mehsana🔝 Escorts...nirzagarg
 
Pune Airport ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready...
Pune Airport ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready...Pune Airport ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready...
Pune Airport ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready...tanu pandey
 
💚😋 Bilaspur Escort Service Call Girls, 9352852248 ₹5000 To 25K With AC💚😋
💚😋 Bilaspur Escort Service Call Girls, 9352852248 ₹5000 To 25K With AC💚😋💚😋 Bilaspur Escort Service Call Girls, 9352852248 ₹5000 To 25K With AC💚😋
💚😋 Bilaspur Escort Service Call Girls, 9352852248 ₹5000 To 25K With AC💚😋nirzagarg
 
( Pune ) VIP Pimpri Chinchwad Call Girls 🎗️ 9352988975 Sizzling | Escorts | G...
( Pune ) VIP Pimpri Chinchwad Call Girls 🎗️ 9352988975 Sizzling | Escorts | G...( Pune ) VIP Pimpri Chinchwad Call Girls 🎗️ 9352988975 Sizzling | Escorts | G...
( Pune ) VIP Pimpri Chinchwad Call Girls 🎗️ 9352988975 Sizzling | Escorts | G...nilamkumrai
 
在线制作约克大学毕业证(yu毕业证)在读证明认证可查
在线制作约克大学毕业证(yu毕业证)在读证明认证可查在线制作约克大学毕业证(yu毕业证)在读证明认证可查
在线制作约克大学毕业证(yu毕业证)在读证明认证可查ydyuyu
 
All Time Service Available Call Girls Mg Road 👌 ⏭️ 6378878445
All Time Service Available Call Girls Mg Road 👌 ⏭️ 6378878445All Time Service Available Call Girls Mg Road 👌 ⏭️ 6378878445
All Time Service Available Call Girls Mg Road 👌 ⏭️ 6378878445ruhi
 
Trump Diapers Over Dems t shirts Sweatshirt
Trump Diapers Over Dems t shirts SweatshirtTrump Diapers Over Dems t shirts Sweatshirt
Trump Diapers Over Dems t shirts Sweatshirtrahman018755
 
Ganeshkhind ! Call Girls Pune - 450+ Call Girl Cash Payment 8005736733 Neha T...
Ganeshkhind ! Call Girls Pune - 450+ Call Girl Cash Payment 8005736733 Neha T...Ganeshkhind ! Call Girls Pune - 450+ Call Girl Cash Payment 8005736733 Neha T...
Ganeshkhind ! Call Girls Pune - 450+ Call Girl Cash Payment 8005736733 Neha T...SUHANI PANDEY
 
Nanded City ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready ...
Nanded City ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready ...Nanded City ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready ...
Nanded City ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready ...tanu pandey
 
VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting High Prof...
VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting  High Prof...VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting  High Prof...
VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting High Prof...singhpriety023
 
Call Girls Ludhiana Just Call 98765-12871 Top Class Call Girl Service Available
Call Girls Ludhiana Just Call 98765-12871 Top Class Call Girl Service AvailableCall Girls Ludhiana Just Call 98765-12871 Top Class Call Girl Service Available
Call Girls Ludhiana Just Call 98765-12871 Top Class Call Girl Service AvailableSeo
 
Pirangut | Call Girls Pune Phone No 8005736733 Elite Escort Service Available...
Pirangut | Call Girls Pune Phone No 8005736733 Elite Escort Service Available...Pirangut | Call Girls Pune Phone No 8005736733 Elite Escort Service Available...
Pirangut | Call Girls Pune Phone No 8005736733 Elite Escort Service Available...SUHANI PANDEY
 
Busty Desi⚡Call Girls in Vasundhara Ghaziabad >༒8448380779 Escort Service
Busty Desi⚡Call Girls in Vasundhara Ghaziabad >༒8448380779 Escort ServiceBusty Desi⚡Call Girls in Vasundhara Ghaziabad >༒8448380779 Escort Service
Busty Desi⚡Call Girls in Vasundhara Ghaziabad >༒8448380779 Escort ServiceDelhi Call girls
 
Lucknow ❤CALL GIRL 88759*99948 ❤CALL GIRLS IN Lucknow ESCORT SERVICE❤CALL GIRL
Lucknow ❤CALL GIRL 88759*99948 ❤CALL GIRLS IN Lucknow ESCORT SERVICE❤CALL GIRLLucknow ❤CALL GIRL 88759*99948 ❤CALL GIRLS IN Lucknow ESCORT SERVICE❤CALL GIRL
Lucknow ❤CALL GIRL 88759*99948 ❤CALL GIRLS IN Lucknow ESCORT SERVICE❤CALL GIRLimonikaupta
 
Call Now ☎ 8264348440 !! Call Girls in Green Park Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Green Park Escort Service Delhi N.C.R.Call Now ☎ 8264348440 !! Call Girls in Green Park Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Green Park Escort Service Delhi N.C.R.soniya singh
 
(+971568250507 ))# Young Call Girls in Ajman By Pakistani Call Girls in ...
(+971568250507  ))#  Young Call Girls  in Ajman  By Pakistani Call Girls  in ...(+971568250507  ))#  Young Call Girls  in Ajman  By Pakistani Call Girls  in ...
(+971568250507 ))# Young Call Girls in Ajman By Pakistani Call Girls in ...Escorts Call Girls
 
20240508 QFM014 Elixir Reading List April 2024.pdf
20240508 QFM014 Elixir Reading List April 2024.pdf20240508 QFM014 Elixir Reading List April 2024.pdf
20240508 QFM014 Elixir Reading List April 2024.pdfMatthew Sinclair
 
20240510 QFM016 Irresponsible AI Reading List April 2024.pdf
20240510 QFM016 Irresponsible AI Reading List April 2024.pdf20240510 QFM016 Irresponsible AI Reading List April 2024.pdf
20240510 QFM016 Irresponsible AI Reading List April 2024.pdfMatthew Sinclair
 

Último (20)

➥🔝 7737669865 🔝▻ mehsana Call-girls in Women Seeking Men 🔝mehsana🔝 Escorts...
➥🔝 7737669865 🔝▻ mehsana Call-girls in Women Seeking Men  🔝mehsana🔝   Escorts...➥🔝 7737669865 🔝▻ mehsana Call-girls in Women Seeking Men  🔝mehsana🔝   Escorts...
➥🔝 7737669865 🔝▻ mehsana Call-girls in Women Seeking Men 🔝mehsana🔝 Escorts...
 
Pune Airport ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready...
Pune Airport ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready...Pune Airport ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready...
Pune Airport ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready...
 
💚😋 Bilaspur Escort Service Call Girls, 9352852248 ₹5000 To 25K With AC💚😋
💚😋 Bilaspur Escort Service Call Girls, 9352852248 ₹5000 To 25K With AC💚😋💚😋 Bilaspur Escort Service Call Girls, 9352852248 ₹5000 To 25K With AC💚😋
💚😋 Bilaspur Escort Service Call Girls, 9352852248 ₹5000 To 25K With AC💚😋
 
( Pune ) VIP Pimpri Chinchwad Call Girls 🎗️ 9352988975 Sizzling | Escorts | G...
( Pune ) VIP Pimpri Chinchwad Call Girls 🎗️ 9352988975 Sizzling | Escorts | G...( Pune ) VIP Pimpri Chinchwad Call Girls 🎗️ 9352988975 Sizzling | Escorts | G...
( Pune ) VIP Pimpri Chinchwad Call Girls 🎗️ 9352988975 Sizzling | Escorts | G...
 
在线制作约克大学毕业证(yu毕业证)在读证明认证可查
在线制作约克大学毕业证(yu毕业证)在读证明认证可查在线制作约克大学毕业证(yu毕业证)在读证明认证可查
在线制作约克大学毕业证(yu毕业证)在读证明认证可查
 
All Time Service Available Call Girls Mg Road 👌 ⏭️ 6378878445
All Time Service Available Call Girls Mg Road 👌 ⏭️ 6378878445All Time Service Available Call Girls Mg Road 👌 ⏭️ 6378878445
All Time Service Available Call Girls Mg Road 👌 ⏭️ 6378878445
 
Trump Diapers Over Dems t shirts Sweatshirt
Trump Diapers Over Dems t shirts SweatshirtTrump Diapers Over Dems t shirts Sweatshirt
Trump Diapers Over Dems t shirts Sweatshirt
 
Ganeshkhind ! Call Girls Pune - 450+ Call Girl Cash Payment 8005736733 Neha T...
Ganeshkhind ! Call Girls Pune - 450+ Call Girl Cash Payment 8005736733 Neha T...Ganeshkhind ! Call Girls Pune - 450+ Call Girl Cash Payment 8005736733 Neha T...
Ganeshkhind ! Call Girls Pune - 450+ Call Girl Cash Payment 8005736733 Neha T...
 
Nanded City ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready ...
Nanded City ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready ...Nanded City ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready ...
Nanded City ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready ...
 
VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting High Prof...
VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting  High Prof...VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting  High Prof...
VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting High Prof...
 
Call Girls Ludhiana Just Call 98765-12871 Top Class Call Girl Service Available
Call Girls Ludhiana Just Call 98765-12871 Top Class Call Girl Service AvailableCall Girls Ludhiana Just Call 98765-12871 Top Class Call Girl Service Available
Call Girls Ludhiana Just Call 98765-12871 Top Class Call Girl Service Available
 
Pirangut | Call Girls Pune Phone No 8005736733 Elite Escort Service Available...
Pirangut | Call Girls Pune Phone No 8005736733 Elite Escort Service Available...Pirangut | Call Girls Pune Phone No 8005736733 Elite Escort Service Available...
Pirangut | Call Girls Pune Phone No 8005736733 Elite Escort Service Available...
 
Busty Desi⚡Call Girls in Vasundhara Ghaziabad >༒8448380779 Escort Service
Busty Desi⚡Call Girls in Vasundhara Ghaziabad >༒8448380779 Escort ServiceBusty Desi⚡Call Girls in Vasundhara Ghaziabad >༒8448380779 Escort Service
Busty Desi⚡Call Girls in Vasundhara Ghaziabad >༒8448380779 Escort Service
 
Lucknow ❤CALL GIRL 88759*99948 ❤CALL GIRLS IN Lucknow ESCORT SERVICE❤CALL GIRL
Lucknow ❤CALL GIRL 88759*99948 ❤CALL GIRLS IN Lucknow ESCORT SERVICE❤CALL GIRLLucknow ❤CALL GIRL 88759*99948 ❤CALL GIRLS IN Lucknow ESCORT SERVICE❤CALL GIRL
Lucknow ❤CALL GIRL 88759*99948 ❤CALL GIRLS IN Lucknow ESCORT SERVICE❤CALL GIRL
 
Call Now ☎ 8264348440 !! Call Girls in Green Park Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Green Park Escort Service Delhi N.C.R.Call Now ☎ 8264348440 !! Call Girls in Green Park Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Green Park Escort Service Delhi N.C.R.
 
(+971568250507 ))# Young Call Girls in Ajman By Pakistani Call Girls in ...
(+971568250507  ))#  Young Call Girls  in Ajman  By Pakistani Call Girls  in ...(+971568250507  ))#  Young Call Girls  in Ajman  By Pakistani Call Girls  in ...
(+971568250507 ))# Young Call Girls in Ajman By Pakistani Call Girls in ...
 
20240508 QFM014 Elixir Reading List April 2024.pdf
20240508 QFM014 Elixir Reading List April 2024.pdf20240508 QFM014 Elixir Reading List April 2024.pdf
20240508 QFM014 Elixir Reading List April 2024.pdf
 
(INDIRA) Call Girl Pune Call Now 8250077686 Pune Escorts 24x7
(INDIRA) Call Girl Pune Call Now 8250077686 Pune Escorts 24x7(INDIRA) Call Girl Pune Call Now 8250077686 Pune Escorts 24x7
(INDIRA) Call Girl Pune Call Now 8250077686 Pune Escorts 24x7
 
20240510 QFM016 Irresponsible AI Reading List April 2024.pdf
20240510 QFM016 Irresponsible AI Reading List April 2024.pdf20240510 QFM016 Irresponsible AI Reading List April 2024.pdf
20240510 QFM016 Irresponsible AI Reading List April 2024.pdf
 
Call Girls in Prashant Vihar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Prashant Vihar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort ServiceCall Girls in Prashant Vihar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Prashant Vihar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort 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