An open API service indexing awesome lists of open source software.

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.

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
[![Java EAR Project Demo](https://github.com/chamikathereal/JMS/blob/main/JMS.png)](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/)