客户的单独队列是只向他们发送消息的好方法吗?
Are individual queues for clients a good approach to send messages only to them?
我有一个系统,其中客户端从队列中提取任务(通过 amqp,使用 RabbitMQ 作为消息服务器)。当一个新的客户端产生时,他拉一个任务,告诉主服务器他是那个特定任务的负责人并开始执行长期任务。从服务器端,我希望能够取消此客户端上的任务,以便他可以转移到另一个任务,以防任务已经导致错误。
将取消任务推送到现有任务队列是不可取的,因为我必须保证它及时到达,甚至到达同一个客户端。
生成客户端时,客户端只为他设置一个专用的交换器和队列是一个好方法吗?服务器可以向其发送命令?
客户端不会设置专用交换器 - 您可以使用默认主题交换器或设置自己的主题交换器。
然后,当客户端拉取任务时,它还会创建自己的独占队列,并将该队列绑定到特定 "cancel task X" 路由键的主题交换。然后,客户端订阅这个队列。如果必须取消任务,"server side" 可以使用适当的路由键向主题交换发布消息。
注意: RabbitMQ 团队监控 the rabbitmq-users
mailing list 并且有时只在 Whosebug 上回答问题。
我有一个系统,其中客户端从队列中提取任务(通过 amqp,使用 RabbitMQ 作为消息服务器)。当一个新的客户端产生时,他拉一个任务,告诉主服务器他是那个特定任务的负责人并开始执行长期任务。从服务器端,我希望能够取消此客户端上的任务,以便他可以转移到另一个任务,以防任务已经导致错误。
将取消任务推送到现有任务队列是不可取的,因为我必须保证它及时到达,甚至到达同一个客户端。
生成客户端时,客户端只为他设置一个专用的交换器和队列是一个好方法吗?服务器可以向其发送命令?
客户端不会设置专用交换器 - 您可以使用默认主题交换器或设置自己的主题交换器。
然后,当客户端拉取任务时,它还会创建自己的独占队列,并将该队列绑定到特定 "cancel task X" 路由键的主题交换。然后,客户端订阅这个队列。如果必须取消任务,"server side" 可以使用适当的路由键向主题交换发布消息。
注意: RabbitMQ 团队监控 the rabbitmq-users
mailing list 并且有时只在 Whosebug 上回答问题。