www說(shuō)
2023-07-13 17:55:52
我正在從 Java Spring Boot 應(yīng)用程序向消費(fèi)者(即 Python 應(yīng)用程序)發(fā)送消息。一切正常,除了當(dāng)我輸入命令時(shí)rabbitmqctl list_queues 它顯示這video_queue 0意味著隊(duì)列中沒(méi)有消息。Consumer正在接收消息并進(jìn)行一些漫長(zhǎng)的過(guò)程;因此,如果我連續(xù)發(fā)送多條消息,應(yīng)該有一些消息在隊(duì)列中等待。我對(duì)嗎?制作人:@Componentpublic class VideoProducer { private Logger logger = LoggerFactory.getLogger(VideoProducer.class); private final static String BROKER_EXCHANGE_NAME = "video_exchange"; private final static String ROUTING_KEY = "video_routing_key"; @Autowired private RabbitTemplate rabbitTemplate; @Autowired private VideoService videoService; @Autowired private Gson gson; public void produceVideo(VideoDTO video) { rabbitTemplate.convertAndSend(BROKER_EXCHANGE_NAME, ROUTING_KEY, gson.toJson(video)); } }}消費(fèi)者connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))channelConsumer = connection.channel()# Video Consumer SettingschannelConsumer.exchange_declare(exchange='video_exchange', exchange_type='direct')channelConsumer.queue_declare(queue="video_queue")channelConsumer.queue_bind(queue="video_queue", exchange="video_exchange", routing_key="video_routing_key")# Consumer Listenerdef callback(ch, method, properties, body): video_dto = eval(json.loads(body)) ##Something long process here print("Done.. ") channelConsumer.basic_consume(queue='video_queue', auto_ack=True, on_message_callback=callback)print(' [*] Waiting for messages. To exit press CTRL+C')channelConsumer.start_consuming()在哪里可以看到我聲明的隊(duì)列上的消息?因?yàn)殡m然我知道隊(duì)列中有消息,但我無(wú)法使用上述命令看到它們。我也在使用 RabbitMQ 管理門戶。
2 回答

GCT1015
TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超4個(gè)贊
您可以使用RMQ管理控制臺(tái)查看RMQ的消息和其他信息。消費(fèi)者可能會(huì)消費(fèi)多個(gè)消息并將它們放入內(nèi)部隊(duì)列中。為避免這種情況,請(qǐng)將 QOS 設(shè)置為 1,并將 ack required 設(shè)置為 true。

楊__羊羊
TA貢獻(xiàn)1943條經(jīng)驗(yàn) 獲得超7個(gè)贊
您可以從訪問(wèn) localhost:15672 的rabbitMQ 管理端口檢查和管理隊(duì)列,一旦任何接收者收到來(lái)自隊(duì)列的消息,它將自動(dòng)從隊(duì)列中刪除。因此,如果您想查看您的消息,您最好通過(guò)管理門戶進(jìn)行檢查,一旦任何收件人收到這些消息,這些消息就會(huì)被刪除。
添加回答
舉報(bào)
0/150
提交
取消