用于多个队列的RabbitMQ配置

显然,我配置了一个单一的队列来接收用户在我的应用程序中的帖子。 以下是配置。

<!-- Creates a queue for consumers to retrieve messages -->
<rabbit:queue name="UserPostpublishQueue" durable="true">
</rabbit:queue>

<!-- queue for sending notifications to users -->
<rabbit:queue name="notificationQueue" durable="true"/>


<!-- Fanout exchange for a pubsub bound to UserPostpublishQueue -->
<fanout-exchange name="broadcastEvents" durable="true" xmlns="http://www.springframework.org/schema/rabbit">
    <bindings>
        <binding queue="UserPostpublishQueue"/>
    </bindings>
</fanout-exchange>

<rabbit:template id="amqpTemplate" connection-factory="connectionFactory" retry-template="retryTemplate" 
exchange="broadcastEvents" channel-transacted="true"/>

在代码中,我只是自动装配了AMQP模板

@Autowired
    AmqpTemplate amqpTemplate;
    amqpTemplate.convertAndSend(post);

现在我必须引入另一个通知队列。 我不知道该怎么做。 我是否将队列与相同的扇出交换绑定在一起,因为交换将用户的帖子推入通知队列。

或者我创建另一个扇出交换,然后将通知队列与该交换绑定,但是如何使用amqp模板注册这个新交换?

或者,我是否为用户发布和通知队列创建直接交换?

我不确定。 任何帮助,将不胜感激。


您应该从业务需求描述开始。

所有提到的绑定变体都是有效的。

  • 你真的可以再添加一个队列到扇出交换 - 同样的消息将被放置到所有队列中。 主题行为。

  • 您可以创建另一个交换并在那里绑定该队列。 在这种情况下,直接交换就足够了。 要将消息完全发送到该队列(可能与post不同),应该使用不同的AmqpTemplate方法:

    void convertAndSend(String exchange, String routingKey, Object message) throws AmqpException;
    
  • 也许对你来说,去RabbitMQ教程并研究所有可能的配置会更好。

    我们最近还为Spring AMQP示例项目的这些教程添加了Spring AMQP实现。

    链接地址: http://www.djcxy.com/p/34215.html

    上一篇: RabbitMQ configuration for multiple queues

    下一篇: like" consumption on RabbitMq?