The most direct mode of consuming events is through real time parsing of events as they are received from the RabbitMQ Message Broker. This is done as a RabbitMQ Client consuming messages from a queue. This is a simple and quick method of accessing event data, but with limitations. While queues can be configured to retain messages received while the client is offline, thereby protecting against data loss due to downtime, any events that occurred before the queue was created will be inaccessible. Furthermore, the client will need to take responsibility for storing any event information needed for later use. In simple use cases, these limitations are not problematic. For instance, if all the information one needs is contained within a single Eiffel event, storing event data is not an issue.
Example: Jane needs to start a memory profiling job whenever a new release candidate is published. She listens to EiffelArtifactPublishedEvent matching he groupId and artifactId of her release candidates, and fetches the artifact at the location included in the event. This is an entirely stateless procedure that is easily implementing by consuming events directly from a RabbitMQ queue.
More advanced use cases, on the other hand, benefit from using Historical Event Lookup and/or Aggregated Event Analysis instead.