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

Microservice pattern: Polling publisher #2673

Open
iluwatar opened this issue Oct 15, 2023 · 12 comments · May be fixed by #3243
Open

Microservice pattern: Polling publisher #2673

iluwatar opened this issue Oct 15, 2023 · 12 comments · May be fixed by #3243

Comments

@iluwatar
Copy link
Owner

iluwatar commented Oct 15, 2023

Description:
The Polling Publisher design pattern is used within microservices architecture to allow services to periodically check for updates or changes and then publish the results to subscribers. This pattern is particularly useful for ensuring that microservices are loosely coupled and can independently manage their data refresh cycles without requiring direct communication or immediate event-based updates.

Main Elements of the Pattern:

  1. Polling Service: A microservice that periodically checks for updates or changes in a specific data source.
  2. Publisher: The component within the polling service that publishes the updated data to interested subscribers.
  3. Subscriber: Services or components that subscribe to the updates published by the polling service.
  4. Scheduler: A mechanism to trigger the polling service at regular intervals.
  5. Data Source: The source from which the polling service fetches updates.
  6. Communication Protocol: Defines how the polling service communicates with subscribers, typically using RESTful APIs, message brokers, or other asynchronous messaging systems.

References:

Acceptance Criteria:

  1. Implement a basic polling service that checks for updates in a predefined data source at regular intervals.
  2. Ensure the polling service can publish updates to subscribers using a RESTful API or message broker.
  3. Provide a sample subscriber that demonstrates how to consume updates from the polling service.
@YashKesh
Copy link

@iluwatar what feature you wanted to add i can do

@CoderSleek
Copy link

Hey @iluwatar, I can pick this task up.

Copy link

stale bot commented Dec 13, 2024

This issue has been automatically marked as stale because it has not had recent activity. The issue will be unassigned if no further activity occurs. Thank you for your contributions.

@stale stale bot added the status: stale issues and pull requests that have not had recent interaction label Dec 13, 2024
@CoderSleek
Copy link

still working on it, albeit a bit slow :)
The stale label can be removed

@stale stale bot removed the status: stale issues and pull requests that have not had recent interaction label Dec 13, 2024
Copy link

This issue is stale because it has been open 60 days with no activity.

@quantdevv
Copy link

@CoderSleek , are you working on this..?

@CoderSleek
Copy link

@quantdevv hey, i was working on this yes but not anymore due to my work. it's available to take up i believe.

@quantdevv
Copy link

quantdevv commented Feb 24, 2025

Thanks @iluwatar @CoderSleek , i'll have a look on this.

@quantdevv
Copy link

Hey @iluwatar , i want to discuss something on this... is there any dedicated server to discuss any kind issue..?

@iluwatar
Copy link
Owner Author

iluwatar commented Mar 2, 2025

Hey @iluwatar , i want to discuss something on this... is there any dedicated server to discuss any kind issue..?

Try Gitter channel here: https://app.gitter.im/#/room/#iluwatar_java-design-patterns:gitter.im

@quantdevv
Copy link

quantdevv commented Mar 4, 2025

Hi @iluwatar , here i'm planning to implement this micro-service pattern in below architecture .. would you like to review it once..?

Here will create two services polling-service & subscriber-service. as i made two to keep it true microservice architecture.

  1. polling-service -> which will handles the periodically check for update or change in datasource & schedule , polling controller alongwith rest-controller so can be tested manually... or can be used either way.

  2. subscriber service -> this contains the kafka MQ , which consume the published message by polling controller & schedular ...

the dummy structure will be like this..

Data-source ------> polling service (polling schedular, controller (publish)) ----> MQ (Kafka) -----> notification

Image

let me know if you have any suggestion on this.. or else i'll proceed with it.

@iluwatar
Copy link
Owner Author

iluwatar commented Mar 5, 2025

Yes, sounds good @quantdevv 👍

@quantdevv quantdevv linked a pull request Apr 6, 2025 that will close this issue
2 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: In Progress
Development

Successfully merging a pull request may close this issue.

4 participants