RabbitMQ报错consumer prefetch count is not set for ‘queue ‘Queue name‘ in vhost ‘vhost name‘‘

前因

今天在编写flink的source部分时,需要由RabbitMQ处获取信息,在此之前已经成功完成了从flink中的sink向RabbitMQ注入数据部分,并且RabbitMQ(下文简称MQ)服务器部分显示信息成功接受,目前正由MQ平台托管,等待接受

由于成功注入数据,因此source部分也就照抄了sink部分的配置,完成了基础程序的编写之后

 final RMQConnectionConfig connectionConfig = new RMQConnectionConfig.Builder()
            .setPrefetchCount(5)
            .setHost("localhost")
            .setPort(5672)
            .setUserName("admin")
            .setPassword("admin")
            .setVirtualHost("tutu")
            .build();


    final DataStream<String> TStream = env
            .addSource(new RMQSource<String>(
                    connectionConfig,           
                    "TWarning",                
                    true,                     
                    new SimpleStringSchema()))   
            .setParallelism(1);

 

    TStream.print();

然后运行!

报错原因

不出意外的话是要出意外了,果然

Caused by: com.rabbitmq.client.ShutdownSignalException: com.rabbitmq.client.ShutdownSignalException: channel error; protocol method: #method<channel.close>(reply-code=406, reply-text=PRECONDITION_FAILED - consumer prefetch count is not set for 'queue 'TWarning' in vhost 'tutu'', class-id=60, method-id=20)
	at com.rabbitmq.client.impl.ChannelN.asyncShutdown(ChannelN.java:517)
	at com.rabbitmq.client.impl.ChannelN.processAsync(ChannelN.java:341)
	at com.rabbitmq.client.impl.AMQChannel.handleCompleteInboundCommand(AMQChannel.java:182)
	at com.rabbitmq.client.impl.AMQChannel.handleFrame(AMQChannel.java:114)
	at com.rabbitmq.client.impl.AMQConnection.readFrame(AMQConnection.java:739)
	at com.rabbitmq.client.impl.AMQConnection.access$300(AMQConnection.java:47)
	at com.rabbitmq.client.impl.AMQConnection$MainLoop.run(AMQConnection.java:666)
	... 1 more

图片如下

报错的核心内容是 consumer prefetch count is not set for 'queue 'TWarning' in vhost 'tutu'',大概意思是没有设置 prefetch count,我一看代码,不对啊,我设置过了的啊,就在代码第二行(也有可能是让我在服务器段设置,但新手小白的我是真的不会设置啊!!

解决问题

于是就迈上了漫长的百度,bing,google,ChatGPT,CSDN之旅,无奈全都没用。正当我绝望之际。正当这时,我遇到了一篇文章忽然注意到了他的virtual host中的queue类型为Classic,这时我开始回想我的Default Queue Type选择的是什么呢......坏了,好像不是Classic而是Stream

 于是删除virtual host,重新设置,问题解决!

 成功输入!

成功接收!

附: exit code 130是因为我强行停止了程序

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值