Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Publish/Subscribe pattern #2898

Open
iluwatar opened this issue Apr 7, 2024 · 5 comments
Open

Publish/Subscribe pattern #2898

iluwatar opened this issue Apr 7, 2024 · 5 comments

Comments

@iluwatar
Copy link
Owner

iluwatar commented Apr 7, 2024

Introduce the Publish/Subscribe pattern to provide a flexible event-handling system.

The Publish/Subscribe pattern is a messaging paradigm used in software architecture with several key points:

  • Decoupling of publishers and subscribers: Publishers and subscribers operate independently, and there's no direct link between them. This enhances the scalability and modularity of applications.

  • Event-driven communication: The pattern facilitates event-driven architectures by allowing publishers to broadcast events without concerning themselves with who receives the events.

  • Dynamic subscription: Subscribers can dynamically choose to listen for specific events or messages they are interested in, often by subscribing to a particular topic or channel.

  • Asynchronous processing: The pattern inherently supports asynchronous message processing, enabling efficient handling of events and improving application responsiveness.

  • Scalability: By decoupling senders and receivers, the pattern can support a large number of publishers and subscribers, making it suitable for scalable systems.

  • Flexibility and adaptability: New subscribers or publishers can be added to the system without significant changes to the existing components, making the system highly adaptable to evolving requirements.

Acceptance Criteria:

  • The implementation must follow the project's coding standards and directory structure as outlined in the contribution guidelines.
  • Comprehensive unit tests must cover the new pattern implementation, ensuring all major use cases are accounted for.
  • Documentation must be provided, explaining the pattern, its use cases, and how the implementation solves a particular problem, including UML diagrams where applicable.
@Ehspresso
Copy link
Contributor

I would like to take this issue.

@Ehspresso
Copy link
Contributor

Can I use Java Message Service to implement the pattern?

@iluwatar
Copy link
Owner Author

Sure, that should work fine

@Ehspresso
Copy link
Contributor

I have an implementation of the pattern. However I am finding it difficult to test since the implementation is quite basic given the asynchronous/threading code is handled by JMS which shouldn't be tested since its a third party software. I can create a pull request and the current tests can be viewed, perhaps you'll find it satisfactory. If not, I am happy to receive criticism to improve my testing, it can improve my knowledge.

@iluwatar
Copy link
Owner Author

Sure, let's see what you have

Ehspresso added a commit to Ehspresso/java-design-patterns that referenced this issue Apr 17, 2024
Ehspresso added a commit to Ehspresso/java-design-patterns that referenced this issue Apr 17, 2024
Ehspresso added a commit to Ehspresso/java-design-patterns that referenced this issue Apr 19, 2024
Ehspresso added a commit to Ehspresso/java-design-patterns that referenced this issue Apr 22, 2024
Ehspresso added a commit to Ehspresso/java-design-patterns that referenced this issue Apr 23, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: In Progress
Development

No branches or pull requests

2 participants