forked from platypush/platypush
[core] Added ApplicationStartedEvent
to Redis bus instead of application.
The Redis bus now uses a pub/sub architecture rather than a simple queue. Earlier on, the application could post an event to the queue and then pick it up when it started listening. When doing a publish on a pub/sub channel, however, any messages sent before the client started listening will be lost.
This commit is contained in:
parent
837b0fad98
commit
dc96b4995c
2 changed files with 4 additions and 2 deletions
|
@ -19,7 +19,6 @@ from platypush.entities import init_entities_engine, EntitiesEngine
|
||||||
from platypush.event.processor import EventProcessor
|
from platypush.event.processor import EventProcessor
|
||||||
from platypush.logger import Logger
|
from platypush.logger import Logger
|
||||||
from platypush.message.event import Event
|
from platypush.message.event import Event
|
||||||
from platypush.message.event.application import ApplicationStartedEvent
|
|
||||||
from platypush.message.request import Request
|
from platypush.message.request import Request
|
||||||
from platypush.message.response import Response
|
from platypush.message.response import Response
|
||||||
from platypush.utils import get_enabled_plugins, get_redis_conf
|
from platypush.utils import get_enabled_plugins, get_redis_conf
|
||||||
|
@ -462,7 +461,6 @@ class Application:
|
||||||
self.cron_scheduler.start()
|
self.cron_scheduler.start()
|
||||||
|
|
||||||
assert self.bus, 'The bus is not running'
|
assert self.bus, 'The bus is not running'
|
||||||
self.bus.post(ApplicationStartedEvent())
|
|
||||||
|
|
||||||
# Poll for messages on the bus
|
# Poll for messages on the bus
|
||||||
try:
|
try:
|
||||||
|
|
|
@ -37,8 +37,12 @@ class RedisBus(Bus):
|
||||||
"""
|
"""
|
||||||
Polls the Redis queue for new messages
|
Polls the Redis queue for new messages
|
||||||
"""
|
"""
|
||||||
|
from platypush.message.event.application import ApplicationStartedEvent
|
||||||
|
|
||||||
with self.pubsub as pubsub:
|
with self.pubsub as pubsub:
|
||||||
pubsub.subscribe(self.redis_queue)
|
pubsub.subscribe(self.redis_queue)
|
||||||
|
self.post(ApplicationStartedEvent())
|
||||||
|
|
||||||
try:
|
try:
|
||||||
for msg in pubsub.listen():
|
for msg in pubsub.listen():
|
||||||
if msg.get('type') != 'message':
|
if msg.get('type') != 'message':
|
||||||
|
|
Loading…
Reference in a new issue