iluwatar / java-design-patterns

Design patterns implemented in Java
https://java-design-patterns.com
Other
92.03k stars 27.04k forks source link

Microservice pattern: Polling publisher #2673

Open iluwatar opened 1 year ago

iluwatar commented 1 year ago

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 commented 1 year ago

@iluwatar what feature you wanted to add i can do

CoderSleek commented 8 months ago

Hey @iluwatar, I can pick this task up.

stale[bot] commented 6 months ago

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.

CoderSleek commented 6 months ago

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

github-actions[bot] commented 4 months ago

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

quantdevv commented 3 months ago

@CoderSleek , are you working on this..?

CoderSleek commented 3 months ago

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

quantdevv commented 3 months ago

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

quantdevv commented 3 months ago

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

iluwatar commented 3 months ago

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 commented 3 months ago

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 commented 3 months ago

Yes, sounds good @quantdevv 👍

github-actions[bot] commented 1 month ago

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

quantdevv commented 1 week ago

Hi @iluwatar , please have a look to PR.