https://github.com/chamikathereal/jms
A simple Java Message Service (JMS) project with queue and topic-based message sending and receiving using Jakarta JMS and Payara Embedded.
https://github.com/chamikathereal/jms
java javaee jms payara
Last synced: 9 months ago
JSON representation
A simple Java Message Service (JMS) project with queue and topic-based message sending and receiving using Jakarta JMS and Payara Embedded.
- Host: GitHub
- URL: https://github.com/chamikathereal/jms
- Owner: chamikathereal
- Created: 2025-05-15T13:57:15.000Z (11 months ago)
- Default Branch: main
- Last Pushed: 2025-05-15T15:22:35.000Z (11 months ago)
- Last Synced: 2025-06-01T06:14:23.209Z (10 months ago)
- Topics: java, javaee, jms, payara
- Language: Java
- Homepage:
- Size: 3.81 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# ๐ JMS (Java Message Service)
This repository demonstrates a simple **Java Message Service (JMS)** application using two independent projects:
- **JMS-First-Client**: Acts as the message **producer** (sends messages to a queue or a topic).
- **JMS-Second-Client**: Acts as the message **consumer** (receives messages from a queue or a topic).
Both projects use **Jakarta JMS**, **JNDI**, and run on the **Payara Embedded Server**.
---
## ๐ฝ๏ธ Demo Video
[](https://youtu.be/04cRmt_z5i4)
---
## ๐ฆ Projects Overview
### 1. JMS-First-Client (Producer)
Sends messages to:
- A **queue** via `QueueSender.java`
- A **topic** via `TopicSender.java`
#### Project Structure
```
JMS-First-Client
โโโ src/
โ โโโ main/
โ โโโ java/
โ โโโ lk.jiat.ee.client/
โ โโโ QueueSender.java
โ โโโ TopicSender.java
โโโ pom.xml
```
---
### 2. JMS-Second-Client (Consumer)
Receives messages from:
- A **queue** via `QueueReceiver.java`
- A **topic** via `TopicReceiver.java`
#### Project Structure
```
JMS-Second-Client
โโโ src/
โ โโโ main/
โ โโโ java/
โ โโโ lk.jiat.ee.client/
โ โโโ QueueReceiver.java
โ โโโ TopicReceiver.java
โโโ pom.xml
````
---
## ๐ Technologies Used
- **Java 11**
- **Jakarta JMS (jakarta.jms)**
- **JNDI (Java Naming and Directory Interface)**
- **Payara Embedded Server 6.2025.4**
- **Maven**
---
## ๐ ๏ธ How to Run
### ๐น Prerequisites
- JDK 11 installed
- Maven installed
- Payara resources (Queue/Topic and connection factories) already configured:
- `jms/MyQueueConnectionFactory`
- `jms/MyQueue`
- `jms/MyConnectionFactory`
- `jms/MyTopic`
### ๐น 1. Start JMS Receiver
Open terminal in `JMS-Second-Client` and run:
```bash
mvn clean compile exec:java -Dexec.mainClass="lk.jiat.ee.client.QueueReceiver"
# Or for topic
mvn clean compile exec:java -Dexec.mainClass="lk.jiat.ee.client.TopicReceiver"
````
### ๐น 2. Send Messages via Producer
Open terminal in `JMS-First-Client` and run:
```bash
mvn clean compile exec:java -Dexec.mainClass="lk.jiat.ee.client.QueueSender"
# Or for topic
mvn clean compile exec:java -Dexec.mainClass="lk.jiat.ee.client.TopicSender"
```
You should see messages being printed in the receiver terminal.
---
## ๐งช Message Flow Summary
| Producer (First Client) | Consumer (Second Client) |
| ----------------------- | ---------------------------- |
| QueueSender โ MyQueue | โ QueueReceiver |
| TopicSender โ MyTopic | โ TopicReceiver (subscriber) |
---
## ๐ License
This project is licensed under the [MIT License](LICENSE).
---
## ๐ค Contributing
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
---
## ๐งโ๐ป Author
**Chamika Gayashan**
Undergraduate Software Engineer | Sri Lanka
Linkedin: [@chamikathereal](https://www.linkedin.com/in/chamikathereal/)