繁体   English   中英

Rabbitmq中的键与队列名称(以及@RabbitListener中为什么两者都存在的原因)

Key vs. Queue name in Rabbitmq (and why there both exist in @RabbitListener)

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我正在阅读这篇文章,它说在fanout以外的消息交换中,消息被路由到与其键匹配的队列中。

如果是这样,那么为什么在以下注释中有两个参数( @Queue valuekey )? 仅指定队列名称还不够吗?

@RabbitListener(bindings = @QueueBinding(value = @Queue(value = RabbitMQConfiguration.AUTHENTICATION_EMAILS_QUEUE, durable = "true"), exchange = @Exchange(value = RabbitMQConfiguration.EMAIL_MESSAGE_EXCHANGE_NAME), key = "accountActivationEmail"))
public void receiveMessage(Map<String, String> message) {
    this.sendEmail(getEmail(message));
}

另一个问题:有了您为侦听器看到的注释,我是否需要有一个单独的@Configuration类来指定MessageListenerAdapterSimpleMessageListenerContainerBindingExchangeQueue ,如下所示:

@Configuration
public class RabbitMQConfiguration {

    public final static String AUTHENTICATION_EMAILS_QUEUE = "AUTHENTICATION_EMAILS_QUEUE";
    public final static String EMAIL_MESSAGE_EXCHANGE_NAME = "EMAIL_EVENTS";

    @Bean
    public Queue authenticationEmailsQueue() {
        return new Queue(AUTHENTICATION_EMAILS_QUEUE, false);
    }

    @Bean
    public DirectExchange emailMessagesExchange() {
        return new DirectExchange(EMAIL_MESSAGE_EXCHANGE_NAME);
    }

    @Bean
    public Binding authenticationEmailMQBinding(Queue queue, DirectExchange exchange) {
        return BindingBuilder.bind(queue).to(exchange).with(AUTHENTICATION_EMAILS_QUEUE);
    }

    @Bean
    public SimpleMessageListenerContainer authenticationEmailContainer(ConnectionFactory connectionFactory,
    MessageListenerAdapter listenerAdapter) {
        SimpleMessageListenerContainer container = new SimpleMessageListenerContainer();
        container.setConnectionFactory(connectionFactory);
        container.setQueueNames(AUTHENTICATION_EMAILS_QUEUE);
        container.setMessageListener(listenerAdapter);
        return container;
    }

    @Bean
    public MessageListenerAdapter authenticationEmailHandlerAdapter(AuthenticationEmailHandler receiver) {
        return new MessageListenerAdapter(receiver, "receiveMessage");
    }

}
问题暂未有回复.您可以查看右边的相关问题.
3 ServiceStack创建的RabbitMQ队列名称中的奇怪字符

我正在尝试向ServiceStack和RabbitMQ中的消息添加一些自定义逻辑。 似乎由ServiceStack创建的队列在队列名称前都有一些难以辨认的字符,这使得按名称很难引用它们。 例如(从RabbitMQ管理工具链接): http:// localhost:15672 /# ...

4 RabbitMQ,EasyNetQ队列名称

我的队列名称是“ TaskQueue”,但是当我运行代码时,请创建一个名称为“ System_String:mscorlib_TaskQueue”的新队列。 我的订户代码如下。 我怎么了 ...

5 @RabbitListener不适用于队列名称模式

我在我的项目中使用spring boot,在该项目中,我需要在运行时使用Rabbitlister中的模式启用来监听几个队列。 我已经尝试过@RabbitListener(queues="queue*") 。 但我抛出异常,应在队列名称中使用常量。 任何帮助,将不胜感激 。 ...

7 消费者不通过在RabbitMQ中将交换名称作为队列名称来传递分片队列中的消息

我在用户端面临RabbitMQ分片的问题。 我正在使用来自nuget的最新稳定的RabbitMQ .Net客户端。 我遍历了各种文档和会议视频,并且知道必须将分片Exchange名称作为队列名称传递给使用者。 通过这种方式, 使用者已连接,但仅从第一个分片队列中获取数据。 如果我有5个分 ...

8 RabbitMq 检查队列中是否存在消息

我正在寻找了解 RabbitMq 消息是否已处理或是否存在于队列中的最佳方法。 我有我的 Web 管理,它通过大量流量将消息发送到我的队列。 如果消费者在数据库中插入新数据,我的应用程序会在 1 分钟内检查数据库,但如果未插入,应用程序会显示错误,即未插入数据。 问题是在高需求的情况下,延迟可能会很 ...

9 带有Rabbitmq的骆驼-Misspelt队列名称

今天,我尝试模拟一个场景,在骆驼“ to”标签中,我提供了一个拼写错误的队列名称(不存在)Camel或RabbitMq,而不是继续抛出异常来完成路由流程。 很抱歉,我确实编写了一个示例程序来使用“ channel.basicPublish”以错误的队列名称发送消息。 我从来没有从Rabbit ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM