Github user sachingoel0101 commented on the pull request:
https://github.com/apache/flink/pull/975#issuecomment-127331693
The basic methodology is this:
1. `TaskManager` keeps asking `JobManager` for running `TaskManagers` at
some interval, same as the `heartbeat` interval.
2. `TaskManager` sets up a `MessageHandler` when it first associated itself
with a `JobManager` and provides it with a gateway to itself.
3. `MessageHandler` sets up separate `TaskMessageHandlers` for all tasks
registered on the `TaskManager` and passes the pointers to the
`RuntimeEnvironment -> PackTask -> RuntimeContext`, whereby user can
`broadcast` the messages derived from the interface `TaskMessage`.
4. User can fetch all messages by calling `receive` from `RuntimeContext`
and is provided a list of all messages available for this task. __Messages will
be delivered only once. __
5. There is a separate limited size `queue` associated with each `Task`,
which serves messages to all parallel instances of a `Task` exactly once,
without duplicating them.
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---