我正在通过 AMQP 1.0 协议为第三方 RabbitMQ 代理开发消费者。我无法使用消息,因为第三方要求我们通过连接到 RabbitMQ 交换来使用消息。据我了解,交换是用于生产消息而不是消费消息。
第三方坚持从exchange进行消费,并且没有提供任何队列名称。如果我的理解有误,请帮助我,并提供任何可以支持我的图书馆参考。
解决方案设计。
ICD 提供以下见解,
请帮助我在质子库示例中做到这一点。
由于您没有为代码提供更多信息,我会用基本的消费者样板来回答:
import org.apache.qpid.protonj2.client.*;
import org.apache.qpid.protonj2.client.exceptions.ClientException;
public class RabbitMQConsumer {
public static void main(String[] args) {
String brokerUrl = "amqp://your.rabbitmq.server:port";
String exchangeName = "yourExchangeName";
try {
Client client = Client.create();
Connection connection = client.connect(brokerUrl);
Session session = connection.openSession();
// Assuming RabbitMQ creates a server-named queue and binds it when the consumer connects
Receiver receiver = session.openReceiver(exchangeName);
receiver.handler((delivery, message) -> {
String body = message.getBody().toString();
// Process message
System.out.println("Received message: " + body);
});
receiver.open();
System.out.println("Connected to exchange and waiting for messages...");
// Keep the application running to listen for messages
Thread.currentThread().join();
} catch (ClientException | InterruptedException e) {
e.printStackTrace();
}
}
}