2016-07-30 44 views
1

我有一个用Ruby编写的应用程序,它有多个线程,每个线程向远程AMQP端点发送请求。这些线程不时会产生新的任务必须运行。RabbitMQ:将消息路由到线程

如果我使用每个线程暂时的,独特的队列发送响应他们的要求,那么就很容易把代码写在这个Ruby的服务来处理传入的消息。一旦关联的频道关闭,队列就会被删除,以便在他们的目的结束后不会停留。

我能想到的所有备选方案需要监听线程监听接收所有传入的消息/响应与Ruby的服务的一个或多个队列,然后使用一些消息标识符将这些消息路由到等待的线程。这看起来更加复杂,我无法将RabbitMQ用于所有需要的语义路由。

第一个模型是AMQP通信的可行模型吗?处理这种情况是否有更好的模式?

回答

2

的答案在很大程度上取决于你的使用情况

,如果你不关心,当一个给定的队列将被删除丢失的邮件,那么第一个选项是好的。

,如果你需要的信息贴在队列中,直到周围的东西出现时处理它,那么你需要有一个持久的队列,其中的消息坐下。

对于每个线程都没有要求,使用rabbitmq。

但是,您应该使用每个线程的通道。

因为,可以有每个线程一个信道和具有多个信道从相同的(或不同的)队列消耗没有问题。

只要你保持局限于单个线程的通道,你可以做任何你在问候你是从消费队列需要。