java代码怎么实现MQ消息订阅
时间: 2024-09-15 19:08:31 浏览: 61
在Java中实现MQ(消息队列)订阅,通常需要使用MQ服务提供商提供的API,比如Apache ActiveMQ、RabbitMQ或Spring Cloud Message。下面是一个简单的示例,以RabbitMQ为例:
```java
import com.rabbitmq.client.*;
public class ConsumerExample {
private ConnectionFactory factory;
private Channel channel;
public void start() throws Exception {
// 创建连接工厂
factory = new ConnectionFactory();
factory.setHost("your-mq-host"); // 替换为你实际的MQ服务器地址
// 连接到MQ
Connection connection = factory.newConnection();
channel = connection.createChannel();
// 定义消费队列
String queueName = "your-queue-name"; // 替换为你的队列名
channel.queueDeclare(queueName, false, true, false, null); // Durable, exclusive, auto-delete options
// 创建消费者并订阅
DeliverCallback deliverCallback = (consumerTag, delivery) -> {
String message = new String(delivery.getBody(), StandardCharsets.UTF_8);
System.out.println("Received message: " + message);
// 处理消息...
channel.basicAck(delivery.getDeliveryTag(), false); // 手动acknowledge消息,防止消息重复消费
};
channel.basicConsume(queueName, true, deliverCallback, consumerTag -> {/* Do nothing */});
// 关闭通道和连接
channel.close();
connection.close();
}
public static void main(String[] args) throws IOException, TimeoutException, InterruptedException {
ConsumerExample consumer = new ConsumerExample();
consumer.start();
}
}
```
在这个例子中,`start()` 方法首先创建一个 `ConnectionFactory`,然后连接到RabbitMQ服务器,声明一个队列,接着创建一个消费者并订阅这个队列。每当有新消息到来,`deliverCallback` 回调会被调用,你可以在这里编写业务逻辑处理消息。
阅读全文