【问题标题】:RabbitMQ Message ExchangeRabbitMQ 消息交换
【发布时间】:2010-08-06 13:12:48
【问题描述】:

我已经创建了一个 RabbitMQ 生产者和一个 RabbitMQ 消费者......

假设我的生产者产生了 10 条消息。我如何从这 10 条消息中获取特定消息。

我想知道如何唯一标识一条消息并阅读或使用该消息。

【问题讨论】:

  • 这是一个真正的问题,他想知道如何过滤消息。
  • 你是在使用 JMS 还是在使用 AMQP ?

标签: c# rabbitmq messaging rabbitmq-exchange


【解决方案1】:

有几种方法可以做到这一点,但我最常用的一种是使用特定于消息类型的路由键。然后,消费者使用特定的路由键绑定到该交换,这会导致消息仅发送给这些消费者。

如果你能避免它,你不应该只是将消息转储到一个队列中并让消费者对它们进行排序。路由键和交换器是专门用于路由消息的强大工具。你应该利用它。

【讨论】:

  • 布里斯宾感谢您回答问题。嗯,我已经知道你在说什么。但我有这个奇怪的要求。这就是我想要做的:当生产者发布消息时(假设他已经发布了 5 条消息),我们应该通知发布者如何唯一标识他的每条消息。当发布者通过我们提供给他的唯一标识符请求他发布的特定消息时..该消息应该显示给他,以便他可以根据需要对其进行编辑并发布新消息。
  • 首先我们绑定exchange、queue和routing key eg:ch.QueueBind("queue", "exch", "key2", false, null);当您发布消息时,您会提到交换、路由密钥、基本属性、消息正文.. 例如:ch.BasicPublish("exch", "key2", null, messagebody1);当您使用消息时,您只提及队列名称。例如:BasicGetResult 结果 = ch.BasicGet("queue", noAck);现在上面的语句将消耗队列中的所有消息..我的问题是如果我想根据路由键从队列中消耗特定消息。
【解决方案2】:

我有一个例子展示了如何在 C# 中创建一个主题队列,这似乎是你正在寻找的 RabbitMQ Tutorial 我还有一个例子展示了如何使用 EventingBasicConsumer 来避免在收到消息时阻塞RabbitMQ EventingBasicConsumer

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-17
    • 2011-12-29
    • 1970-01-01
    • 2011-09-03
    • 2012-12-26
    • 2018-12-31
    • 1970-01-01
    • 2012-12-17
    相关资源
    最近更新 更多