小编jan*_*res的帖子

无法获得对锁定队列的独占访问

我有一个这样定义的匿名和独占队列:

@Bean 
    public SimpleMessageListenerContainer responseMessageListenerContainer(){
        SimpleMessageListenerContainer container = new SimpleMessageListenerContainer(simpleRoutingConnectionFactory());
        container.setQueues(responseAnonymousQueue());
        container.setMessageListener(rabbitTemplate());
        container.setAcknowledgeMode(AcknowledgeMode.AUTO);
        container.setMessageConverter(jsonMessageConverter());
        return container;
    }

@Bean
    public Queue responseAnonymousQueue() { 
        return new MyAnonymousQueue();
    }
Run Code Online (Sandbox Code Playgroud)

有时我在rabbitmq日志中收到此错误:

=错误报告===== 2016年4月12日:: 15:13:42 ===连接<0.6899.0>上的通道错误(XX.XXX.57.1​​74:51716-> 192.168.100.145:5671,虚拟主机:' /',用户:'XXXX_USER'),频道1:{amqp_error,resource_locked,“无法获得对虚拟主机'/'中锁定队列'XXXX_USER-broad-1457bb43-6487-4252-b21a-a5a92d19e0dc'的独占访问”,“队列” 。宣布'}

因此,客户端无法声明队列,也无法从AMQP服务器接收消息。

在此消息之后发生:

=警告报告==== 2016年4月12日:: 15:11:51 ===关闭AMQP连接<0.6810.0>(XX.XXX.57.1​​74:17959-> 192.168.100.145:5671):connection_closed_abruptly

=信息报告==== 2016年4月12日:: 15:13:41 ===接受AMQP连接<0.6899.0>(XX.XXX.57.1​​74:51716-> 192.168.100.145:5671)

我无法重现它(我曾尝试关闭Rabbitmq的连接并拔下网络电缆,但应用程序再次重新连接良好),所以我不知道为什么会这样。假设在连接关闭时删除了专用队列和专用队列,为什么会这样呢?如何捕获此异常并从中恢复?

谢谢

spring spring-amqp

4
推荐指数
1
解决办法
6900
查看次数

带有两个 ConnectionFactory 的 Spring AMQP

我有一个带有两个 ConnectionFactory(不同的代理)的应用程序。它们配置了 java 类:                

    @Bean
    public ConnectionFactory ...

    @Bean
    public Queue ...
...
Run Code Online (Sandbox Code Playgroud)

在 rabbittemplate 中,您可以指示连接,但不能在队列或交换中指示,因此它们是在两个连接中创建的。我是否必须仅使用 RabbitAdmin 在两个连接之一中创建队列?还有其他方法吗?

spring spring-amqp

2
推荐指数
1
解决办法
2157
查看次数

标签 统计

spring ×2

spring-amqp ×2