How to measure the performance of delivering remote announcements
When working with remote objects through proxies, PharoLink allows local objects to register for remote events.
The current mechanism uses queues to pull and deliver announcements in bulk in a background process.
Object subclass: #GtRrAnnouncementQueueLocalListener
instanceVariableNames: 'announcer processLabel terminationCondition timeout isPolling proxy requestTermination poolingProcess'
provides more details.
Delivering large numbers of announcements can be slow if they contains a lot of data, or objects receiving those announcements do a lot of work.
GtBeaconEventsCollector subclass: #GtRrAnnouncementQueueEventsCollector
provides a way to monitor the delivery of remote announcements and measure performance.
The simplest way is to use the default instance of the collector.
Aternatively we can create a new collector instance.
eventsCollector := GtRrAnnouncementQueueEventsCollector new
In case multiple instance of the collector are registered, the snippet below will stop them.
GtRrAnnouncementQueueEventsCollector allInstances do: #stop
The collector uses Beacon signals subclassing
BeaconSignal subclass: #GtRrAnnouncementQueueSignal
. It is also possible to listen for those events directly using beacon.
logger := MemoryLogger startFor: GtRrAnnouncementQueueSignal.