gpt4 book ai didi

java - 关于RabbitMQ的两个问题

转载 作者:行者123 更新时间:2023-12-01 14:16:56 25 4
gpt4 key购买 nike

大家好

ubuntu 中使用 jJava 中的 RabbitMQ 时,我有两个问题。

首先,如何从队列中获取消息?有两种“正确”的方式,例如:

ConnectionFactory factory = new ConnectionFactory(params);  
Connection conn = factory.newConnection("localhost", 5672);
Channel channel = conn.createChannel();
String message=channel.basicGet("queuename", noAck).getBody();

另一个是

ConnectionFactory factory = new ConnectionFactory();
factory.setHost("localhost");
Connection connection = factory.newConnection();
Channel channel = connection.createChannel();
channel.queueDeclare("queuename", true, false, false, null);
QueueingConsumer consumer = new QueueingConsumer(channel);
QueueingConsumer.Delivery delivery = consumer.nextDelivery();
String message = new String(delivery.getBody());

那么哪一个是正确的呢?如果两者都是,它们之间有什么区别?

第二,如何知道队列中的消息数量?也就是说,我想检查队列是否为空。

有一些我可以使用的 API 吗? channel.basicGet

如果队列中有ack的消息,channel.basicGet会返回什么?其实我不知道channel.basicGet的第二个参数是什么意思....

非常感谢

最佳答案

第一个选项是检索单个消息。noAck 参数是 boolean 值,表示自动确认或否。如果设置为no,则需要手动ack。

查看更多信息: http://www.rabbitmq.com/api-guide.html

第二个选项使用 QueueingConsumer。用于缓冲服务器推送给我们的消息的类。您还可以在此选项中创建队列:

channel.queueDeclare("queuename", true, false, false, null);

在此处查看有关此选项的更多信息:http://www.rabbitmq.com/tutorials/tutorial-one-java.html

最后一件事。如果您熟悉Spring ,我建议您也阅读以下内容: http://docs.spring.io/spring-integration/docs/latest-ga/reference/html/

我用过。简单明了。

关于java - 关于RabbitMQ的两个问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18051651/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com