├── .gitpod.Dockerfile
├── materials
├── img
│ ├── splash.png
│ ├── logo-yt.png
│ ├── astra-00-logo.jpg
│ ├── gitpod-1-home.png
│ ├── gitpod-2-conf.png
│ ├── gitpod-6-dual.png
│ ├── kesque-00-web.png
│ ├── kesque-08-plan.png
│ ├── logo-katacoda.png
│ ├── yt-subscribe.jpeg
│ ├── astra-01-signin.png
│ ├── astra-06-summary.png
│ ├── kesque-01-login.png
│ ├── kesque-11-topic1.png
│ ├── kesque-12-topic2.png
│ ├── kesque-13-topic3.png
│ ├── kesque-14-token.png
│ ├── kesque-23-topic.png
│ ├── logo-katacoda-2.png
│ ├── astra-02-createdb1.png
│ ├── astra-03-createdb2.png
│ ├── astra-04-createdb3.png
│ ├── astra-05-createdb4.png
│ ├── katacoda-scenario-1.png
│ ├── katacoda-scenario-2.png
│ ├── katacoda-scenario-3.png
│ ├── katacoda-scenario-4.png
│ ├── katacoda-scenario-5.png
│ ├── katacoda-scenario-6.png
│ ├── katacoda-scenario-7.png
│ ├── katacoda-scenario-8.png
│ ├── katacoda-scenario-9.png
│ ├── kesque-07-dashboard.png
│ ├── kesque-09-cluster.png
│ ├── kesque-10-namespace.png
│ ├── kesque-16-producer1.png
│ ├── kesque-17-producer2.png
│ ├── kesque-18-producer3.png
│ ├── kesque-19-producer4.png
│ ├── kesque-24-consumer.png
│ ├── streaming-09-astra.png
│ ├── astra-07-cqlconsole1.png
│ ├── astra-08-cqlconsole2.png
│ ├── astra-09-cqlconsole3.png
│ ├── astra-10-securebundle.png
│ ├── gitpod-3-logproducer.png
│ ├── gitpod-4-newterminal.png
│ ├── gitpod-5-newterminal.png
│ ├── katacoda-scenario-10.png
│ ├── katacoda-scenario-11.png
│ ├── katacoda-scenario-12.png
│ ├── katacoda-scenario-13.png
│ ├── kesque-15-codesample.png
│ ├── kesque-20-webclient-1.png
│ ├── kesque-21-webclient-2.png
│ ├── kesque-22-webclient-3.png
│ ├── resources-01-slashdev.png
│ ├── resources-02-academy.png
│ ├── resources-03-katacoda.png
│ ├── resources-05-discord.png
│ ├── resources-06-youtube.png
│ ├── streaming-01-addsink1.png
│ ├── streaming-02-addsink2.png
│ ├── streaming-03-addsink3.png
│ ├── streaming-04-addsink4.png
│ ├── streaming-05-addsink5.png
│ ├── streaming-06-created1.png
│ ├── streaming-07-created2.png
│ ├── streaming-08-created3.png
│ ├── kesque-02-createtenant1.png
│ ├── kesque-03-createtenant2.png
│ ├── kesque-04-createtenant3.png
│ ├── kesque-05-createtenant4.png
│ ├── kesque-06-createtenant5.png
│ ├── kesque-25-subscription.png
│ ├── resources-04-workshops.png
│ └── resources-07-community.png
└── pulsar_presentation.pdf
├── .theia
└── settings.json
├── .gitignore
├── .gitpod.yml
├── pulsar-demo
├── src
│ └── main
│ │ ├── resources
│ │ ├── logback.xml
│ │ └── application.properties
│ │ └── java
│ │ └── com
│ │ └── datastax
│ │ └── pulsar
│ │ ├── DemoBean.java
│ │ ├── SimplePulsarProducer.java
│ │ ├── SimplePulsarConsumer.java
│ │ └── DemoKesqueConfiguration.java
└── pom.xml
└── README.md
/.gitpod.Dockerfile:
--------------------------------------------------------------------------------
1 | FROM gitpod/workspace-full
--------------------------------------------------------------------------------
/materials/img/splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/datastaxdevs/workshop-pulsar/main/materials/img/splash.png
--------------------------------------------------------------------------------
/materials/img/logo-yt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/datastaxdevs/workshop-pulsar/main/materials/img/logo-yt.png
--------------------------------------------------------------------------------
/materials/img/astra-00-logo.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/datastaxdevs/workshop-pulsar/main/materials/img/astra-00-logo.jpg
--------------------------------------------------------------------------------
/materials/img/gitpod-1-home.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/datastaxdevs/workshop-pulsar/main/materials/img/gitpod-1-home.png
--------------------------------------------------------------------------------
/materials/img/gitpod-2-conf.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/datastaxdevs/workshop-pulsar/main/materials/img/gitpod-2-conf.png
--------------------------------------------------------------------------------
/materials/img/gitpod-6-dual.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/datastaxdevs/workshop-pulsar/main/materials/img/gitpod-6-dual.png
--------------------------------------------------------------------------------
/materials/img/kesque-00-web.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/datastaxdevs/workshop-pulsar/main/materials/img/kesque-00-web.png
--------------------------------------------------------------------------------
/materials/img/kesque-08-plan.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/datastaxdevs/workshop-pulsar/main/materials/img/kesque-08-plan.png
--------------------------------------------------------------------------------
/materials/img/logo-katacoda.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/datastaxdevs/workshop-pulsar/main/materials/img/logo-katacoda.png
--------------------------------------------------------------------------------
/materials/img/yt-subscribe.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/datastaxdevs/workshop-pulsar/main/materials/img/yt-subscribe.jpeg
--------------------------------------------------------------------------------
/materials/img/astra-01-signin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/datastaxdevs/workshop-pulsar/main/materials/img/astra-01-signin.png
--------------------------------------------------------------------------------
/materials/img/astra-06-summary.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/datastaxdevs/workshop-pulsar/main/materials/img/astra-06-summary.png
--------------------------------------------------------------------------------
/materials/img/kesque-01-login.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/datastaxdevs/workshop-pulsar/main/materials/img/kesque-01-login.png
--------------------------------------------------------------------------------
/materials/img/kesque-11-topic1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/datastaxdevs/workshop-pulsar/main/materials/img/kesque-11-topic1.png
--------------------------------------------------------------------------------
/materials/img/kesque-12-topic2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/datastaxdevs/workshop-pulsar/main/materials/img/kesque-12-topic2.png
--------------------------------------------------------------------------------
/materials/img/kesque-13-topic3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/datastaxdevs/workshop-pulsar/main/materials/img/kesque-13-topic3.png
--------------------------------------------------------------------------------
/materials/img/kesque-14-token.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/datastaxdevs/workshop-pulsar/main/materials/img/kesque-14-token.png
--------------------------------------------------------------------------------
/materials/img/kesque-23-topic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/datastaxdevs/workshop-pulsar/main/materials/img/kesque-23-topic.png
--------------------------------------------------------------------------------
/materials/img/logo-katacoda-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/datastaxdevs/workshop-pulsar/main/materials/img/logo-katacoda-2.png
--------------------------------------------------------------------------------
/materials/pulsar_presentation.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/datastaxdevs/workshop-pulsar/main/materials/pulsar_presentation.pdf
--------------------------------------------------------------------------------
/materials/img/astra-02-createdb1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/datastaxdevs/workshop-pulsar/main/materials/img/astra-02-createdb1.png
--------------------------------------------------------------------------------
/materials/img/astra-03-createdb2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/datastaxdevs/workshop-pulsar/main/materials/img/astra-03-createdb2.png
--------------------------------------------------------------------------------
/materials/img/astra-04-createdb3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/datastaxdevs/workshop-pulsar/main/materials/img/astra-04-createdb3.png
--------------------------------------------------------------------------------
/materials/img/astra-05-createdb4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/datastaxdevs/workshop-pulsar/main/materials/img/astra-05-createdb4.png
--------------------------------------------------------------------------------
/materials/img/katacoda-scenario-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/datastaxdevs/workshop-pulsar/main/materials/img/katacoda-scenario-1.png
--------------------------------------------------------------------------------
/materials/img/katacoda-scenario-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/datastaxdevs/workshop-pulsar/main/materials/img/katacoda-scenario-2.png
--------------------------------------------------------------------------------
/materials/img/katacoda-scenario-3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/datastaxdevs/workshop-pulsar/main/materials/img/katacoda-scenario-3.png
--------------------------------------------------------------------------------
/materials/img/katacoda-scenario-4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/datastaxdevs/workshop-pulsar/main/materials/img/katacoda-scenario-4.png
--------------------------------------------------------------------------------
/materials/img/katacoda-scenario-5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/datastaxdevs/workshop-pulsar/main/materials/img/katacoda-scenario-5.png
--------------------------------------------------------------------------------
/materials/img/katacoda-scenario-6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/datastaxdevs/workshop-pulsar/main/materials/img/katacoda-scenario-6.png
--------------------------------------------------------------------------------
/materials/img/katacoda-scenario-7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/datastaxdevs/workshop-pulsar/main/materials/img/katacoda-scenario-7.png
--------------------------------------------------------------------------------
/materials/img/katacoda-scenario-8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/datastaxdevs/workshop-pulsar/main/materials/img/katacoda-scenario-8.png
--------------------------------------------------------------------------------
/materials/img/katacoda-scenario-9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/datastaxdevs/workshop-pulsar/main/materials/img/katacoda-scenario-9.png
--------------------------------------------------------------------------------
/materials/img/kesque-07-dashboard.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/datastaxdevs/workshop-pulsar/main/materials/img/kesque-07-dashboard.png
--------------------------------------------------------------------------------
/materials/img/kesque-09-cluster.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/datastaxdevs/workshop-pulsar/main/materials/img/kesque-09-cluster.png
--------------------------------------------------------------------------------
/materials/img/kesque-10-namespace.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/datastaxdevs/workshop-pulsar/main/materials/img/kesque-10-namespace.png
--------------------------------------------------------------------------------
/materials/img/kesque-16-producer1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/datastaxdevs/workshop-pulsar/main/materials/img/kesque-16-producer1.png
--------------------------------------------------------------------------------
/materials/img/kesque-17-producer2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/datastaxdevs/workshop-pulsar/main/materials/img/kesque-17-producer2.png
--------------------------------------------------------------------------------
/materials/img/kesque-18-producer3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/datastaxdevs/workshop-pulsar/main/materials/img/kesque-18-producer3.png
--------------------------------------------------------------------------------
/materials/img/kesque-19-producer4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/datastaxdevs/workshop-pulsar/main/materials/img/kesque-19-producer4.png
--------------------------------------------------------------------------------
/materials/img/kesque-24-consumer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/datastaxdevs/workshop-pulsar/main/materials/img/kesque-24-consumer.png
--------------------------------------------------------------------------------
/materials/img/streaming-09-astra.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/datastaxdevs/workshop-pulsar/main/materials/img/streaming-09-astra.png
--------------------------------------------------------------------------------
/.theia/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "editor.autoSave": "on",
3 | "java.configuration.updateBuildConfiguration": "interactive"
4 | }
5 |
6 |
--------------------------------------------------------------------------------
/materials/img/astra-07-cqlconsole1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/datastaxdevs/workshop-pulsar/main/materials/img/astra-07-cqlconsole1.png
--------------------------------------------------------------------------------
/materials/img/astra-08-cqlconsole2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/datastaxdevs/workshop-pulsar/main/materials/img/astra-08-cqlconsole2.png
--------------------------------------------------------------------------------
/materials/img/astra-09-cqlconsole3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/datastaxdevs/workshop-pulsar/main/materials/img/astra-09-cqlconsole3.png
--------------------------------------------------------------------------------
/materials/img/astra-10-securebundle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/datastaxdevs/workshop-pulsar/main/materials/img/astra-10-securebundle.png
--------------------------------------------------------------------------------
/materials/img/gitpod-3-logproducer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/datastaxdevs/workshop-pulsar/main/materials/img/gitpod-3-logproducer.png
--------------------------------------------------------------------------------
/materials/img/gitpod-4-newterminal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/datastaxdevs/workshop-pulsar/main/materials/img/gitpod-4-newterminal.png
--------------------------------------------------------------------------------
/materials/img/gitpod-5-newterminal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/datastaxdevs/workshop-pulsar/main/materials/img/gitpod-5-newterminal.png
--------------------------------------------------------------------------------
/materials/img/katacoda-scenario-10.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/datastaxdevs/workshop-pulsar/main/materials/img/katacoda-scenario-10.png
--------------------------------------------------------------------------------
/materials/img/katacoda-scenario-11.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/datastaxdevs/workshop-pulsar/main/materials/img/katacoda-scenario-11.png
--------------------------------------------------------------------------------
/materials/img/katacoda-scenario-12.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/datastaxdevs/workshop-pulsar/main/materials/img/katacoda-scenario-12.png
--------------------------------------------------------------------------------
/materials/img/katacoda-scenario-13.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/datastaxdevs/workshop-pulsar/main/materials/img/katacoda-scenario-13.png
--------------------------------------------------------------------------------
/materials/img/kesque-15-codesample.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/datastaxdevs/workshop-pulsar/main/materials/img/kesque-15-codesample.png
--------------------------------------------------------------------------------
/materials/img/kesque-20-webclient-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/datastaxdevs/workshop-pulsar/main/materials/img/kesque-20-webclient-1.png
--------------------------------------------------------------------------------
/materials/img/kesque-21-webclient-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/datastaxdevs/workshop-pulsar/main/materials/img/kesque-21-webclient-2.png
--------------------------------------------------------------------------------
/materials/img/kesque-22-webclient-3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/datastaxdevs/workshop-pulsar/main/materials/img/kesque-22-webclient-3.png
--------------------------------------------------------------------------------
/materials/img/resources-01-slashdev.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/datastaxdevs/workshop-pulsar/main/materials/img/resources-01-slashdev.png
--------------------------------------------------------------------------------
/materials/img/resources-02-academy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/datastaxdevs/workshop-pulsar/main/materials/img/resources-02-academy.png
--------------------------------------------------------------------------------
/materials/img/resources-03-katacoda.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/datastaxdevs/workshop-pulsar/main/materials/img/resources-03-katacoda.png
--------------------------------------------------------------------------------
/materials/img/resources-05-discord.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/datastaxdevs/workshop-pulsar/main/materials/img/resources-05-discord.png
--------------------------------------------------------------------------------
/materials/img/resources-06-youtube.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/datastaxdevs/workshop-pulsar/main/materials/img/resources-06-youtube.png
--------------------------------------------------------------------------------
/materials/img/streaming-01-addsink1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/datastaxdevs/workshop-pulsar/main/materials/img/streaming-01-addsink1.png
--------------------------------------------------------------------------------
/materials/img/streaming-02-addsink2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/datastaxdevs/workshop-pulsar/main/materials/img/streaming-02-addsink2.png
--------------------------------------------------------------------------------
/materials/img/streaming-03-addsink3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/datastaxdevs/workshop-pulsar/main/materials/img/streaming-03-addsink3.png
--------------------------------------------------------------------------------
/materials/img/streaming-04-addsink4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/datastaxdevs/workshop-pulsar/main/materials/img/streaming-04-addsink4.png
--------------------------------------------------------------------------------
/materials/img/streaming-05-addsink5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/datastaxdevs/workshop-pulsar/main/materials/img/streaming-05-addsink5.png
--------------------------------------------------------------------------------
/materials/img/streaming-06-created1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/datastaxdevs/workshop-pulsar/main/materials/img/streaming-06-created1.png
--------------------------------------------------------------------------------
/materials/img/streaming-07-created2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/datastaxdevs/workshop-pulsar/main/materials/img/streaming-07-created2.png
--------------------------------------------------------------------------------
/materials/img/streaming-08-created3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/datastaxdevs/workshop-pulsar/main/materials/img/streaming-08-created3.png
--------------------------------------------------------------------------------
/materials/img/kesque-02-createtenant1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/datastaxdevs/workshop-pulsar/main/materials/img/kesque-02-createtenant1.png
--------------------------------------------------------------------------------
/materials/img/kesque-03-createtenant2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/datastaxdevs/workshop-pulsar/main/materials/img/kesque-03-createtenant2.png
--------------------------------------------------------------------------------
/materials/img/kesque-04-createtenant3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/datastaxdevs/workshop-pulsar/main/materials/img/kesque-04-createtenant3.png
--------------------------------------------------------------------------------
/materials/img/kesque-05-createtenant4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/datastaxdevs/workshop-pulsar/main/materials/img/kesque-05-createtenant4.png
--------------------------------------------------------------------------------
/materials/img/kesque-06-createtenant5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/datastaxdevs/workshop-pulsar/main/materials/img/kesque-06-createtenant5.png
--------------------------------------------------------------------------------
/materials/img/kesque-25-subscription.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/datastaxdevs/workshop-pulsar/main/materials/img/kesque-25-subscription.png
--------------------------------------------------------------------------------
/materials/img/resources-04-workshops.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/datastaxdevs/workshop-pulsar/main/materials/img/resources-04-workshops.png
--------------------------------------------------------------------------------
/materials/img/resources-07-community.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/datastaxdevs/workshop-pulsar/main/materials/img/resources-07-community.png
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # eclipse conf file
2 | .settings
3 | .classpath
4 | .project
5 | .cache
6 |
7 | # idea conf files
8 | .idea
9 | *.ipr
10 | *.iws
11 | *.iml
12 |
13 | # building
14 | target
15 | build
16 | tmp
17 | dist
18 |
19 | # misc
20 | .DS_Store
21 |
22 | .factorypath
23 | .sts4-cache
24 | *.log
25 |
--------------------------------------------------------------------------------
/.gitpod.yml:
--------------------------------------------------------------------------------
1 | image:
2 | file: .gitpod.Dockerfile
3 |
4 | tasks:
5 | - name: Build-demo
6 | init: |
7 | cd pulsar-demo && mvn clean package install -Dmaven.test.skip=true
8 |
9 | github:
10 | prebuilds:
11 | master: true
12 | branches: true
13 | pullRequests: true
14 | pullRequestsFromForks: false
15 | addCheck: true
16 | addComment: false
17 | addBadge: true
18 | addLabel: false
--------------------------------------------------------------------------------
/pulsar-demo/src/main/resources/logback.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | %d{HH:mm:ss.SSS} %magenta(%-5level) %cyan(%-45logger) : %msg%n
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/pulsar-demo/src/main/resources/application.properties:
--------------------------------------------------------------------------------
1 | # ---------------------------------------
2 | # Configuration of your Kesque tenant
3 | # ---------------------------------------
4 |
5 | # BE GENTLE WITH THE FREE TIER
6 | demo.wait_between_message=1000
7 |
8 | # UPDATE THOSE KEYS IF YOU DID NOT PICK DATACENTER uswest2.aws
9 | kesque.service_url=pulsar+ssl://uswest2.aws.kafkaesque.io:6651
10 | kesque.namespace=local-uswest2-aws
11 |
12 | # UPDATE THIS KEY WITH THE NAME OF YOUR TENANT
13 | kesque.tenant_name=
14 |
15 | # UPDATE THIS KEY WITH YOUR AUTHENTICATIONT TOKEN
16 | kesque.authentication_token=
17 |
18 | # Update this key if you used a different topic name
19 | kesque.topic_name=astra
20 |
--------------------------------------------------------------------------------
/pulsar-demo/src/main/java/com/datastax/pulsar/DemoBean.java:
--------------------------------------------------------------------------------
1 | package com.datastax.pulsar;
2 |
3 | public class DemoBean {
4 | String id;
5 | String value;
6 |
7 | public DemoBean(String id, String value) {
8 | super();
9 | this.id = id;
10 | this.value = value;
11 | }
12 | /**
13 | * Getter accessor for attribute 'id'.
14 | *
15 | * @return
16 | * current value of 'id'
17 | */
18 | public String getId() {
19 | return id;
20 | }
21 | /**
22 | * Setter accessor for attribute 'id'.
23 | * @param id
24 | * new value for 'id '
25 | */
26 | public void setId(String id) {
27 | this.id = id;
28 | }
29 | /**
30 | * Getter accessor for attribute 'value'.
31 | *
32 | * @return
33 | * current value of 'value'
34 | */
35 | public String getValue() {
36 | return value;
37 | }
38 | /**
39 | * Setter accessor for attribute 'value'.
40 | * @param value
41 | * new value for 'value '
42 | */
43 | public void setValue(String value) {
44 | this.value = value;
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Workshop Apache Cassandra™ and Apache Pulsar™
2 |
3 | [](https://github.com/DataStax-academy/workshop-pulsar)
4 | [](http://www.apache.org/licenses/LICENSE-2.0)
5 | [](https://discord.com/widget?id=685554030159593522&theme=dark)
6 |
7 | 
8 |
9 | This workshop will guide you through the steps to connect Pulsar and Cassandra without any need for you to install anything
10 |
11 | ### 📅 2 livestreams on Youtube
12 |
13 | - **Wednesday, February 3rd, 12EDT (Targeting LATAM REGION)**: [📺 Start Watching!](https://youtu.be/nF502PmFi_w)
14 |
15 | - **Thursday February 4th, 12:30 IST, (targeting EMEA.APAC Regions)**: [📺 Start Watching!](https://youtu.be/nF502PmFi_w)
16 |
17 | ### Slides
18 |
19 | * [📁 Presentation](https://github.com/DataStax-Academy/workshop-pulsar/blob/main/materials/pulsar_presentation.pdf)
20 |
21 | ### Hands-ON
22 |
23 | Instructions have been moved [to the wiki](https://github.com/DataStax-Academy/workshop-pulsar/wiki).
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/pulsar-demo/pom.xml:
--------------------------------------------------------------------------------
1 |
4 | 4.0.0
5 | com.datastax.pulsar
6 | pulsar-demo
7 | 0.0.1-SNAPSHOT
8 | jar
9 | pulsar-demo
10 |
11 |
12 | UTF-8
13 | 2.6.1
14 | 1.7.30
15 | 1.2.3
16 | 3.8.1
17 | 11
18 |
19 |
20 |
21 |
22 |
23 | org.apache.pulsar
24 | pulsar-client
25 | ${version.pulsar}
26 |
27 |
28 |
29 | ch.qos.logback
30 | logback-classic
31 | ${version.logback}
32 |
33 |
34 | org.slf4j
35 | slf4j-api
36 | ${version.slf4j}
37 |
38 |
39 | org.slf4j
40 | jcl-over-slf4j
41 | ${version.slf4j}
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 | org.apache.maven.plugins
50 | maven-compiler-plugin
51 | ${version.maven-compiler-plugin}
52 |
53 | ${version.java}
54 | ${version.java}
55 | true
56 |
57 |
58 |
59 |
60 |
61 |
--------------------------------------------------------------------------------
/pulsar-demo/src/main/java/com/datastax/pulsar/SimplePulsarProducer.java:
--------------------------------------------------------------------------------
1 | package com.datastax.pulsar;
2 |
3 | import java.util.UUID;
4 |
5 | import org.apache.pulsar.client.api.AuthenticationFactory;
6 | import org.apache.pulsar.client.api.Producer;
7 | import org.apache.pulsar.client.api.PulsarClient;
8 | import org.apache.pulsar.client.api.PulsarClientException;
9 | import org.apache.pulsar.client.api.Schema;
10 |
11 | public class SimplePulsarProducer {
12 |
13 | public static void main(String[] args) {
14 |
15 | PulsarClient pulsarClient = null;
16 | Producer pulsarProducer = null;
17 |
18 | try {
19 | DemoKesqueConfiguration conf =
20 | DemoKesqueConfiguration.getInstance();
21 |
22 | // Create client object
23 | pulsarClient = PulsarClient.builder()
24 | .serviceUrl(conf.getServiceUrl())
25 | .authentication(AuthenticationFactory.token(conf.getAuthenticationToken()))
26 | .build();
27 |
28 | // Create producer on a topic
29 | pulsarProducer = pulsarClient
30 | .newProducer(Schema.JSON(DemoBean.class))
31 | .topic("persistent://"
32 | + conf.getTenantName() + "/"
33 | + conf.getNamespace() + "/"
34 | + conf.getTopicName())
35 | .create();
36 |
37 | while(true) {
38 | String uid = UUID.randomUUID().toString();
39 | pulsarProducer.send(new DemoBean(uid, "Hello World !"));
40 | System.out.println("[PRODUCER] - Message " + uid + " sent");
41 | Thread.sleep(conf.getWaitPeriod());
42 | }
43 |
44 | } catch (PulsarClientException e) {
45 | throw new IllegalStateException("Cannot connect to pulsar", e);
46 | } catch (InterruptedException e) {
47 | System.out.println("[INFO] - Stopped request retrieved");
48 | } finally {
49 | try {
50 | if (null != pulsarProducer) pulsarProducer.close();
51 | if (null != pulsarClient) pulsarClient.close();
52 | } catch (PulsarClientException e) {}
53 | System.out.println("[INFO] - SimplePulsarProducer has been stopped.");
54 | }
55 | }
56 |
57 | }
58 |
--------------------------------------------------------------------------------
/pulsar-demo/src/main/java/com/datastax/pulsar/SimplePulsarConsumer.java:
--------------------------------------------------------------------------------
1 | package com.datastax.pulsar;
2 |
3 | import java.util.concurrent.TimeUnit;
4 |
5 | import org.apache.pulsar.client.api.AuthenticationFactory;
6 | import org.apache.pulsar.client.api.Consumer;
7 | import org.apache.pulsar.client.api.Message;
8 | import org.apache.pulsar.client.api.PulsarClient;
9 | import org.apache.pulsar.client.api.PulsarClientException;
10 | import org.apache.pulsar.client.api.Schema;
11 | import org.apache.pulsar.client.api.SubscriptionInitialPosition;
12 |
13 | public class SimplePulsarConsumer {
14 |
15 | public static void main(String[] args) {
16 |
17 | PulsarClient pulsarClient = null;
18 | Consumer pulsarConsumer = null;
19 |
20 | try {
21 | DemoKesqueConfiguration conf =
22 | DemoKesqueConfiguration.getInstance();
23 |
24 | // Create client object
25 | pulsarClient = PulsarClient.builder()
26 | .serviceUrl(conf.getServiceUrl())
27 | .authentication(AuthenticationFactory.token(conf.getAuthenticationToken()))
28 | .build();
29 |
30 | pulsarConsumer = pulsarClient.newConsumer(Schema.JSON(DemoBean.class))
31 | .topic("persistent://"
32 | + conf.getTenantName() + "/"
33 | + conf.getNamespace() + "/"
34 | + conf.getTopicName())
35 | .startMessageIdInclusive()
36 | .subscriptionInitialPosition(SubscriptionInitialPosition.Earliest)
37 | .subscriptionName("SimplePulsarConsumer")
38 | .subscribe();
39 |
40 | while(true) {
41 | Message msg = pulsarConsumer.receive(conf.getWaitPeriod(), TimeUnit.MILLISECONDS);
42 | if(msg != null){
43 | System.out.println("[CONSUMER] - Message received:" + new String(msg.getData()));
44 | pulsarConsumer.acknowledge(msg);
45 | Thread.sleep(conf.getWaitPeriod());
46 | }
47 | }
48 |
49 | } catch (PulsarClientException e) {
50 | throw new IllegalStateException("Cannot connect to pulsar", e);
51 | } catch (InterruptedException e) {
52 | System.out.println("[INFO] - Stopped request retrieved");
53 | } finally {
54 | try {
55 | if (null != pulsarConsumer) pulsarConsumer.close();
56 | if (null != pulsarClient) pulsarClient.close();
57 | } catch (PulsarClientException e) {}
58 | System.out.println("[INFO] - SimplePulsarProducer has been stopped.");
59 | }
60 | }
61 |
62 | }
63 |
--------------------------------------------------------------------------------
/pulsar-demo/src/main/java/com/datastax/pulsar/DemoKesqueConfiguration.java:
--------------------------------------------------------------------------------
1 | package com.datastax.pulsar;
2 |
3 | import java.io.FileNotFoundException;
4 | import java.io.IOException;
5 | import java.util.Properties;
6 |
7 | public class DemoKesqueConfiguration {
8 |
9 | private static DemoKesqueConfiguration _instance;
10 |
11 | private String serviceUrl;
12 |
13 | private String tenantName;
14 |
15 | private String namespace;
16 |
17 | private String topicName;
18 |
19 | private String authenticationToken;
20 |
21 | private int waitPeriod = 1000;
22 |
23 | public static synchronized DemoKesqueConfiguration getInstance() {
24 | if (null == _instance) {
25 | _instance = new DemoKesqueConfiguration();
26 | }
27 | return _instance;
28 | }
29 |
30 | private DemoKesqueConfiguration() {
31 | try {
32 | Properties properties = new Properties();
33 | properties.load(Thread
34 | .currentThread()
35 | .getContextClassLoader()
36 | .getResourceAsStream("application.properties"));
37 |
38 | this.serviceUrl = properties.getProperty("kesque.service_url");
39 | if (null == serviceUrl) {
40 | throw new IllegalArgumentException("Cannot read serviceUrl in conf file");
41 | }
42 |
43 | this.namespace = properties.getProperty("kesque.namespace");
44 | if (null == namespace) {
45 | throw new IllegalArgumentException("Cannot read namespace in conf file");
46 | }
47 |
48 | this.tenantName = properties.getProperty("kesque.tenant_name");
49 | if (null == tenantName) {
50 | throw new IllegalArgumentException("Cannot read tenant_name in conf file");
51 | }
52 |
53 | this.topicName = properties.getProperty("kesque.topic_name");
54 | if (null == topicName) {
55 | throw new IllegalArgumentException("Cannot read topic_name in conf file");
56 | }
57 |
58 | this.authenticationToken = properties.getProperty("kesque.authentication_token");
59 | if (null == authenticationToken) {
60 | throw new IllegalArgumentException("Cannot read authenticationo_token in conf file");
61 | }
62 |
63 | String newPeriod = properties.getProperty("demo.wait_between_message");
64 | if (null != newPeriod) {
65 | waitPeriod = Integer.parseInt(newPeriod);
66 | }
67 |
68 | System.out.println("[INFO] - Configuration has been loaded successfully");
69 |
70 | } catch (FileNotFoundException e) {
71 | throw new IllegalStateException(e);
72 | } catch (IOException e) {
73 | throw new IllegalStateException(e);
74 | }
75 | }
76 |
77 | public static void main(String[] args) {
78 | new DemoKesqueConfiguration();
79 | }
80 |
81 |
82 | /**
83 | * Getter accessor for attribute 'serviceUrl'.
84 | *
85 | * @return
86 | * current value of 'serviceUrl'
87 | */
88 | public String getServiceUrl() {
89 | return serviceUrl;
90 | }
91 |
92 | /**
93 | * Getter accessor for attribute 'tenantName'.
94 | *
95 | * @return
96 | * current value of 'tenantName'
97 | */
98 | public String getTenantName() {
99 | return tenantName;
100 | }
101 |
102 |
103 | /**
104 | * Getter accessor for attribute 'namespace'.
105 | *
106 | * @return
107 | * current value of 'namespace'
108 | */
109 | public String getNamespace() {
110 | return namespace;
111 | }
112 |
113 |
114 | /**
115 | * Getter accessor for attribute 'topicName'.
116 | *
117 | * @return
118 | * current value of 'topicName'
119 | */
120 | public String getTopicName() {
121 | return topicName;
122 | }
123 |
124 | /**
125 | * Getter accessor for attribute 'authenticationToken'.
126 | *
127 | * @return
128 | * current value of 'authenticationToken'
129 | */
130 | public String getAuthenticationToken() {
131 | return authenticationToken;
132 | }
133 |
134 | /**
135 | * Getter accessor for attribute 'waitPeriod'.
136 | *
137 | * @return
138 | * current value of 'waitPeriod'
139 | */
140 | public int getWaitPeriod() {
141 | return waitPeriod;
142 | }
143 |
144 |
145 | }
146 |
--------------------------------------------------------------------------------